2017-03-28 21 views
19

我想建立一個多目標.NET 4.5.1和.NET標準1.3的類庫。據the documentation,我應該能夠做到這一點:在csproj文件中多目標時產生錯誤

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

但是,當我嘗試建立,我得到這些奇怪的錯誤:

無法推斷從TargetFramework TargetFrameworkIdentifier和/或TargetFrameworkVersion =」 net451' 。它們必須明確指定。

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> 

我使用Visual Studio 2017年社區。我在這裏做錯了什麼?

+2

你可以分享你的整個的.csproj? 我有 <項目SDK = 「Microsoft.NET.Sdk」> <的PropertyGroup> net451; netstandard1.3 而且它建立罰款在VS 2017企業。 –

+2

您應該使用標籤的「s」結尾。所以不是TargetFramework,它必須是TargetFramework ** s ** – user3107888

回答

50

您確定要寫<TargetFrameworks>net451;netstandard1.3</TargetFrameworks>而不是<TargetFramework>net451;netstandard1.3</TargetFramework>

,直到我說我得到了同樣的錯誤失蹤s

+4

這麼微妙的區別!爲什麼選擇MS? – gregsdennis

+0

通過Visual Studio中的項目屬性UI進行更改似乎將其重新設置爲。需要注意的地方。 –

+1

在Core 2.0中改進了錯誤信息 - 請參閱https://github.com/dotnet/sdk/pull/1274 –