在csproj文件中进行多目标定位时构建错误

Nat*_*ini 21 .net csproj .net-core visual-studio-2017

我正在尝试构建一个多目标.NET 4.5.1和.NET Standard 1.3的类库.根据文档,我应该能够这样做:

<PropertyGroup>
  <TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试构建时,我得到了这些奇怪的错误:

无法从TargetFramework ='net451'推断出TargetFrameworkIdentifier和/或TargetFrameworkVersion.必须明确指定它们.

找不到MSB3645 .NET Framework v3.5 Service Pack 1.要以".NETFramework,Version = v1.3"为目标,必须安装.NET Framework v3.5 Service Pack 1或更高版本.

MSB3644找不到 框架".NETFramework,Version = v1.3"的引用程序集.要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本.请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.

如果我手动指定目标框架标识符,它构建正常:

<PropertyGroup>
  <TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'net451'">
  <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
  <TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我正在使用Visual Studio 2017社区.我在这里做错了吗?

mci*_*321 58

你肯定写过<TargetFrameworks>net451;netstandard1.3</TargetFrameworks>而不是<TargetFramework>net451;netstandard1.3</TargetFramework>吗?

我得到了同样的错误,直到我添加了缺失 s

  • 这种微妙的差异!为何选择MS?! (5认同)
  • Core 2.0中的错误消息有所改进 - 请访问https://github.com/dotnet/sdk/pull/1274 (2认同)