12

通常、次のターゲットが に表示されproject.jsonます。

"frameworks": {
    "net45": {},
    "dnx451": {},
    "dnxcore50": { }
}

dnxcore50プロジェクト コードの唯一の移植可能なバージョンになり、dnx451実際には .Net 4.5.1 mscorlib などを対象としています。

ここで、 という別のターゲットを追加するとdnx50、有効な出力が作成され、問題なく動作します。

dnx451 と dnx50 の違いは、異なる .Net アセンブリ dll を参照することです。

mscorlib.dll:

  • dnx451リファレンスC:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll
  • dnx50C:\Windows\Microsoft.NET\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dllは、基本的に .net 4.6 バージョンを参照しています。

質問は次のとおりです。

dnx50たとえば、カスタム ライブラリのターゲットを作成することは理にかなっていますか? 基本的に.net 4.6をターゲットにして、dnxcore50ポータブルにはない特定の機能が必要ですか?

または、dnx451ターゲットは実際には十分であり、より新しい.netバージョン(4.5.2、4.6)の特定の機能が必要ない場合、このターゲットは.net 4.6がシステムにインストールされていればとにかく使用します.プロジェクトに必要な最低バージョンをターゲットにしているだけですか?

つまり、dnx451 と dnx50 の両方のターゲットを使用すると、実際には同じ出力が作成されるということですか?

4

2 に答える 2

5

詳細については、この質問を参照してください。使用できるすべての異なるタイプのリストを次に示します。

  • dnxcore50- CoreCLR/CoreFx 上で動作する DNX SDK
  • dnx451- .Net 4.5.1 で動作する DNX SDK (デスクトップ CLR / フル BCL および FCL)
  • net46- .Net 4.6 で動作する .Net Framework SDK (デスクトップ CLR / フル BCL および FCL)。
  • uap10.0- .Net Native/CoreFx 上で動作する UWP SDK
  • dotnet- (PCL コントラクトの代わりに) 依存関係を宣言する任意の純粋な IL コード。フレームワークの依存関係は、.Net 4.6、DNX、または UWP で利用できます。

dnx45.NET 4.5 の場合は、ASP.NET プロジェクトとnet45、.NET 4.5 を対象とする他のプロジェクトに使用する必要があります。どちらをターゲットにするかは、何をしたいかによって異なります。一度に複数をターゲットにすることもできます。

現在、.NET Core (DNX) の機能は非常に限られています。これで十分でない場合は、dnx46.NET 4.6 を使用する ASP.NET 5 と .NET 4.6 をnet46使用する他のプロジェクトの完全な .NET ランタイムをターゲットにします。

于 2015-10-15T08:56:22.327 に答える
0

ビルド ターゲットに付ける名前は独自のものであり、任意の名前を使用できるため、問題なく動作します。

ビルド ターゲットは、コード内の #if DNXCORE50 ロジック ブロック ブラケットに使用できるグローバルな大文字の #define ステートメントも生成します。

ただし、それは機能しますが、プロジェクトのリンクの問題が発生しないように、Microsoft が提供する公式のターゲットに固執することをお勧めします。新しいターゲットを作成できますが、消費するアプリケーションも実際にそれらのターゲットを使用できる必要があります。したがって、独自のプロジェクトでは問題なく動作しますが、それがある種の一般的なプロジェクトである場合は、カスタム ビルド ターゲットを文書化する必要があります。

于 2015-06-02T18:22:20.480 に答える