具有多个目标框架的项目的 dotnet publish sln 失败
dotnet publish sln having projects with multiple target frameworks fails
我有很多项目的解决方案。一些目标框架netcoreapp2.1,一些其他目标框架netstandard2.0和一个项目有一个双目标框架
<TargetFrameworks>netstandard2.0;net471</TargetFrameworks>
我想用一个命令为 win10 制作一个工件:
dotnet publish MySolution.sln -c Release -o "targetFolder" -r win10-x64
使用这个命令,我在使用双目标框架构建项目时遇到了这个错误。这是错误:
C:\Program Files\dotnet\sdk.1.402\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.CrossTargeting.targets(31,5) error : The 'Publish' target is not supported without specifying a target framework. The current project targets multiple frameworks, please specify the framework for the published application.
错误很明显。最后我发现在输出目录中编译了dll,它似乎是一个netstandard2.0 dll,因为我的应用程序仍然有效。
我不喜欢脏东西,请问怎么解决?
如果可能,我会避免调用 N 次 "dotnet publish" 命令。
不要在解决方案中使用具有相同输出目录的 dotnet publish
。特别是不使用“-r”参数。
这很危险,因为:
- 库没有针对 netstandard facade 包的正确修剪行为
- 库在使用“-r”发布时可能会有奇怪的行为,尤其是对于 netstandard<2.0 依赖项。 (他们最终会复制 .NET Core 1.0/1.1 实现(!)程序集)
- 您最终可能会在输出中得到不同的 NuGet 依赖项(传递依赖项)
- Copy-to-output/publish-directory 项目最终可能会相互覆盖,甚至可能导致构建失败
为所有应用程序(控制台应用程序、Web 应用程序)项目单独调用它或创建发布这些应用程序的 MSBuild 文件。
我有很多项目的解决方案。一些目标框架netcoreapp2.1,一些其他目标框架netstandard2.0和一个项目有一个双目标框架
<TargetFrameworks>netstandard2.0;net471</TargetFrameworks>
我想用一个命令为 win10 制作一个工件:
dotnet publish MySolution.sln -c Release -o "targetFolder" -r win10-x64
使用这个命令,我在使用双目标框架构建项目时遇到了这个错误。这是错误:
C:\Program Files\dotnet\sdk.1.402\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.CrossTargeting.targets(31,5) error : The 'Publish' target is not supported without specifying a target framework. The current project targets multiple frameworks, please specify the framework for the published application.
错误很明显。最后我发现在输出目录中编译了dll,它似乎是一个netstandard2.0 dll,因为我的应用程序仍然有效。
我不喜欢脏东西,请问怎么解决?
如果可能,我会避免调用 N 次 "dotnet publish" 命令。
不要在解决方案中使用具有相同输出目录的 dotnet publish
。特别是不使用“-r”参数。
这很危险,因为:
- 库没有针对 netstandard facade 包的正确修剪行为
- 库在使用“-r”发布时可能会有奇怪的行为,尤其是对于 netstandard<2.0 依赖项。 (他们最终会复制 .NET Core 1.0/1.1 实现(!)程序集)
- 您最终可能会在输出中得到不同的 NuGet 依赖项(传递依赖项)
- Copy-to-output/publish-directory 项目最终可能会相互覆盖,甚至可能导致构建失败
为所有应用程序(控制台应用程序、Web 应用程序)项目单独调用它或创建发布这些应用程序的 MSBuild 文件。