在csproj文件中多目标时生成错误

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (42)

我正在尝试构建一个类库,它可以同时针对.NET 4.5.1和.NET Standard 1.3。根据文献,我应该能做到:

<PropertyGroup>
  <TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
</PropertyGroup>

然而,当我尝试构建时,我会发现以下一些奇怪的错误:

无法从TargetFramework=‘net 451’推断TargetFrameworkIdfier和/或TargetFrameworkVersion。必须明确指定它们。MSB 3645未找到.NET Framework v3.5 ServicePack 1。为了针对“.NETFramework,version=v1.3”,必须安装.NET Framework v3.5 Service Pack 1或更高版本。MSB 3644没有找到框架的引用程序集“.NETFramework,version=v1.3”。要解决这一问题,请安装此框架版本的SDK或目标包,或者将应用程序重新定向到安装了SDK或TargetPack的框架版本。注意,程序集将从全局程序集缓存(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>

我正在使用VisualStudio 2017社区。我在这里做错什么了吗?

提问于
用户回答回答于

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

在添加缺失之前,我得到了同样的错误s

扫码关注云+社区