TargetFrameworks 不适用于 VS 2019 16.6.2

TargetFrameworks does not work on VS 2019 16.6.2

我正在尝试同时为 net35 和 net40 编译一个二进制文件,类似于 Newtonsoft.Json.csproj

所以我用 VS 2019 16.6.2 创建了一个 .NET Console project。然后我关闭了VS,手动编辑了csproj文件,

  1. 已将 <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> 替换为 <TargetFrameworks>net35;net40</TargetFrameworks>
  2. 已将 <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 替换为 <Project Sdk="Microsoft.NET.Sdk">

然后我重新打开Visual Studio并重新编译解决方案,它仍然生成test -> C:\Users\Administrator\Source\Repos\test\test\bin\Debug\test.exe

我期待两个单独的文件夹,又名 net35\test.exenet40\test.exe

我错过了什么?

TargetFrameworks does not work on VS 2019 16.6.2

实际上,这不是 Visual Studio.

的问题

原因是你先创建了old-sdk风格的项目(Net Framework项目),old-sdk风格无法获取新sdk的outputpath (你想要的是新sdk的输出路径-----Net CoreNet Standard)如果你迁移old-sdk 样式转换成 new-sdk 样式,你可能会遇到一些麻烦。我们也不建议您这样做。

因此对于您的情况,您可以先在Visual Studio中创建一个Net Core控制台应用程序 而不是 Net Framework 项目。

建议

我建议你可以在visual studio中创建一个Net Core Console项目或者通过dotnet.exe使用dotnet new console,然后你可以修改新项目,使用这个:

<TargetFrameworks>net35;net40</TargetFrameworks>

然后你可以在输出路径中看到你期望的内容。