0

最近、DNX と .Net Core 5 の学習をいじっています。しかし、なぜnet451がproject.Jsonで利用できるのかについて私は混乱しています。

私が理解している方法は、.Net Core 5 に対してクロスプラットフォームになるようにコンパイルされる DNX 互換プロジェクトです。

DNX プロジェクトに「System.Configuration」という参照を追加すると、Json の net451 セクションに表示されるようになります。

クロスプラットフォームの構築に失敗するだけですか? または、Core 5 に移植可能な .Net 4.5.1 の特定の部分のみを使用できますか?

さらに調べてみると、それらはターゲット フレームワークのように見えるので、4.5.1 をターゲットにして 4.5.1 の依存関係を使用することはできますが、Linux などの DNX と互換性がないと考えてよろしいですか?

後で Core 5 と互換性のあるものを構築する方法を明確にしようとしています。

Full CLR では何も使用しないようにする必要がありますか?

4

1 に答える 1

1

質問に答えるために、DNX が途方に暮れている間、新しいものdotnet cliは と非常によく似た動作をしproject.jsonます。劇的に変化しているのは、すべてがどのように構築されているかだけです (オンザフライでコンパイルされた dnxdotnet cliは MSBuild に非常に似ています)。

DNX プロジェクトに「System.Configuration」という参照を追加すると、Json の net451 セクションに表示されるようになります。

クロスプラットフォームの構築に失敗するだけですか? または、Core 5 に移植可能な .Net 4.5.1 の特定の部分のみを使用できますか?

プログラミングのほとんどのことと同様に...それは依存します。

frameworkAssemblies特に下に追加する場合net451

dnxcore50次に、そこでクラスを使用すると、 (すぐに)のコンパイラ エラーが発生しますnetstandard1.5

デフォルトでは、コンパイラは組み込みのコンパイル シンボルを提供します。それで、あなたがそれを処理する方法は、次のようなことをすることです...

#if NET451
using System.Configuration;
// your codehere
#else
// do something that supports `dnxcore50` or throw a not supported exception, etc.
#endif

基本的に、完全にクロス プラットフォームのものを構築しようとしている場合、そのようなものSystem.Configurationは使用できるものではありません。

多くのプラットフォームで動作するものを構築しようとしているが、内部で実行するときにより高い忠実度が必要な場合net451は、条件付きコンパイルを使用してそこに到達できます。

于 2016-05-10T20:33:17.033 に答える