通过 ClickOnce 发布 WPF 应用程序时,引用项目出现 .NET 5 TargetFramework 问题
.NET 5 TargetFramework issue with referenced project when publishing WPF App over ClickOnce
我正在尝试使用 ClickOnce(内置于 VS2019)发布一个带有 Target Framework net5.0-windows 的 WPF 应用程序,它有一个对另一个 .NET5 Class 库的项目引用。
但我总是运行进入以下异常:
Publish has encountered an error.
Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details.
诊断日志向我显示了确切的异常:
System.AggregateException: One or more errors occurred. ---> Microsoft.WebTools.Shared.Exceptions.WebToolsException: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details.
--- End of inner exception stack trace ---
---> (Inner Exception #0) Microsoft.WebTools.Shared.Exceptions.WebToolsException: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details. <---
Microsoft.WebTools.Shared.Exceptions.WebToolsException: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details.
问题很容易重现:
- 使用 WPF 项目 (.NET5) 创建新解决方案
- 在此解决方案中创建新的 Class 库 (.NET5)
- 从 WPF 应用程序引用 Class库
- 尝试使用 ClickOnce 发布 WPF 应用程序(右键单击 WPF 应用程序项目 -> 发布 -> ClickOnce,...)
这是我按照上述步骤创建的演示项目:
PublishDemo.Core(Class 图书馆)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
PublishDemo.Wpf(WPF 应用程序)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\PublishDemo.Core\PublishDemo.Core.csproj" />
</ItemGroup>
</Project>
构建输出显示以下错误:
Metadata file 'C:\work\source\unmanaged\PublishDemo\PublishDemo\PublishDemo.Core\bin\Release\net5.0-windows\PublishDemo.Core.dll' could not be found
当使用 Release-build 配置时,它会尝试引用路径 \bin\Release\net5.0-windows 我认为这没有任何意义因为 Class 库针对框架类型 net5.0。此外,在检查文件夹后,Class 库确实将构建的文件放入名为 net5.0.
的文件夹中
问题是我不知道在哪里可以更改它,或者是否有解决该问题的方法。
我已经更新到最新的VisualStudio版本(16.9.0),因为我认为可能是因为在Vs中新实现了ClickOnce方式,但这并没有解决问题。
发布到文件夹有效。 Azure 我没有,所以我不能尝试。
谁能帮我解决这个问题?
另外,如果您需要更多信息,我很乐意提供。
我发现了这个报告的问题,错误看起来像你的:
https://developercommunity.visualstudio.com/t/clickonce-publish-for-net-core-31-and-net-50-may-f/1275937
从上面的线程中复制了一些变化:
发布命令似乎在与已发布项目相同的目标运行时中寻找文件,即使它可能不同(并在发布命令之外成功构建)。
即使应用程序以 net5.0-windows 为目标并且 class 库是 net5.0.
也会出现此问题
解决方法是 select 特定的 Target Runtime(即 win-x64),而不是使用默认的 Portable.
我正在尝试使用 ClickOnce(内置于 VS2019)发布一个带有 Target Framework net5.0-windows 的 WPF 应用程序,它有一个对另一个 .NET5 Class 库的项目引用。
但我总是运行进入以下异常:
Publish has encountered an error.
Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details.
诊断日志向我显示了确切的异常:
System.AggregateException: One or more errors occurred. ---> Microsoft.WebTools.Shared.Exceptions.WebToolsException: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details. --- End of inner exception stack trace ---
---> (Inner Exception #0) Microsoft.WebTools.Shared.Exceptions.WebToolsException: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details. <---
Microsoft.WebTools.Shared.Exceptions.WebToolsException: Publish has encountered an error. We were unable to determine the cause of the error. Check the output log for more details.
问题很容易重现:
- 使用 WPF 项目 (.NET5) 创建新解决方案
- 在此解决方案中创建新的 Class 库 (.NET5)
- 从 WPF 应用程序引用 Class库
- 尝试使用 ClickOnce 发布 WPF 应用程序(右键单击 WPF 应用程序项目 -> 发布 -> ClickOnce,...)
这是我按照上述步骤创建的演示项目:
PublishDemo.Core(Class 图书馆)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
PublishDemo.Wpf(WPF 应用程序)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\PublishDemo.Core\PublishDemo.Core.csproj" />
</ItemGroup>
</Project>
构建输出显示以下错误:
Metadata file 'C:\work\source\unmanaged\PublishDemo\PublishDemo\PublishDemo.Core\bin\Release\net5.0-windows\PublishDemo.Core.dll' could not be found
当使用 Release-build 配置时,它会尝试引用路径 \bin\Release\net5.0-windows 我认为这没有任何意义因为 Class 库针对框架类型 net5.0。此外,在检查文件夹后,Class 库确实将构建的文件放入名为 net5.0.
的文件夹中问题是我不知道在哪里可以更改它,或者是否有解决该问题的方法。 我已经更新到最新的VisualStudio版本(16.9.0),因为我认为可能是因为在Vs中新实现了ClickOnce方式,但这并没有解决问题。 发布到文件夹有效。 Azure 我没有,所以我不能尝试。
谁能帮我解决这个问题? 另外,如果您需要更多信息,我很乐意提供。
我发现了这个报告的问题,错误看起来像你的:
https://developercommunity.visualstudio.com/t/clickonce-publish-for-net-core-31-and-net-50-may-f/1275937
从上面的线程中复制了一些变化:
发布命令似乎在与已发布项目相同的目标运行时中寻找文件,即使它可能不同(并在发布命令之外成功构建)。
即使应用程序以 net5.0-windows 为目标并且 class 库是 net5.0.
也会出现此问题
解决方法是 select 特定的 Target Runtime(即 win-x64),而不是使用默认的 Portable.