2017-03-28 10 views
19

.NET 4.5.1と.NET Standard 1.3の両方をマルチターゲットとするクラスライブラリを構築しようとしています。csprojファイルのマルチターゲティング時にビルドエラーが発生する

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

、私が構築しようとすると、私はこれらの奇妙なエラーを取得:

TargetFrameworkからTargetFrameworkIdentifierおよび/またはTargetFrameworkVersionを推測することはできません=」the documentationによると、私はこれを行うことができるはず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"> 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

ビジュアルスタジオのプロジェクトプロパティUIで変更を加えるとに戻ってしまうようです。気を付けるもの –

+1

コア2.0で改善されたエラーメッセージ - https://github.com/dotnet/sdk/pull/1274 –

関連する問題