问题描述
我正在尝试构建一个同时面向 .NET 4.5.1 和 .NET Standard 1.3 的类库.根据 文档,我应该可以做到这一点:
I'm trying to build a class library that multi-targets both .NET 4.5.1 and .NET Standard 1.3. According to the documentation, I should be able to do this:
<PropertyGroup>
<TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
</PropertyGroup>
但是,当我尝试构建时,我得到了这些奇怪的错误:
However, when I try to build, I get these odd errors:
无法从 TargetFramework='net451' 推断 TargetFrameworkIdentifier 和/或 TargetFrameworkVersion.必须明确指定它们.
Cannot infer TargetFrameworkIdentifier and/or TargetFrameworkVersion from TargetFramework='net451'. They must be specified explicitly.
MSB3645 .NET Framework v3.5 Service Pack 1 未找到.为了定位.NETFramework,Version=v1.3",必须安装 .NET Framework v3.5 Service Pack 1 或更高版本.
MSB3645 .NET Framework v3.5 Service Pack 1 was not found. In order to target ".NETFramework,Version=v1.3", .NET Framework v3.5 Service Pack 1 or later must be installed.
MSB3644 框架.NETFramework,Version=v1.3"的参考程序集没有找到.要解决此问题,请为此框架版本安装 SDK 或 Targeting Pack,或者将您的应用程序重新定位到已安装 SDK 或 Targeting Pack 的框架版本.请注意,程序集将从全局程序集缓存 (GAC) 中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位于您想要的框架.
MSB3644 The reference assemblies for framework ".NETFramework,Version=v1.3" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend.
如果我手动指定目标框架标识符,它构建得很好:
If I specify the target framework identifiers manually, it builds fine:
<PropertyGroup>
<TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'net451'">
<TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
<TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>
</PropertyGroup>
我正在使用 Visual Studio 2017 社区.我在这里做错了吗?
I'm using Visual Studio 2017 Community. Am I doing something wrong here?
推荐答案
你确定写了吗
<TargetFrameworks>net451;netstandard1.3</TargetFrameworks>
而不是
<TargetFramework>net451;netstandard1.3</TargetFramework>
?
在添加缺少的 s
这篇关于在 csproj 文件中进行多目标时生成错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!