9

この質問にはすでに答えがあります。

私は古いバージョンの.NET Framework(.NET 4.5.2)をターゲットとするプロジェクトを持っています。私はVisual Studio 2015(そして私のマシンには.NET 4.6)をインストールしました。 .NET 4.6 / C#6でリリースされたC#言語機能を使用しても、コンパイルは完了することに気付きました。私のプロジェクトのターゲットフレームワークが<の場合.NET 4.6では、これはコンパイルできません。

    public string MyExpressionBodyProperty => "1";

    //auto properties are new in C# 6
    public string MyAutoProperty { get; } = "1";

    private static void MethodThatUsesNameOf(string filename)
    {
        if (filename == null) 
        {
            //nameof was released in C# 6
            throw new ArgumentException("The file does not exist.", nameof(filename));
        }
    }

ターゲットとしているフレームワークバージョンで動作する.NET言語機能のみを使用していることを確認する方法を教えてください。

2 답변


20

.NET FrameworkのバージョンとC#言語のバージョンは異なります。 C#6の言語機能

public string MyAutoProperty { get; } = "1";
nameof(filename)

VS 2015によって、以前のフレームワークをターゲットとするコードにコンパイルできます。

ターゲットとしているフレームワークバージョンで動作する.NET言語機能のみを使用していることを確認する方法を教えてください。

.NET 4.6 Framework機能を使用しようとすると、以前のフレームワークをターゲットにしている場合は適切なコンパイラエラーが発生します。

.NET 4.6がインストールされていないマシンにこのコードをデプロイすることはできますか?

はい、そうです。デプロイメントマシンがVS2015でターゲットとしているものと互換性のあるフレームワークを持っている限り。


  • 別のオプションは、プロジェクトプロパティ - ビルド - 詳細設定でC#バージョン5に変更することです。 - Wayne Bloss

12

C#6の機能と.NET 4.6の機能があります。

nameofC#6の機能であるため、新しいコンパイラで実行するだけで済みますが、それでも古い.NET Frameworkを使用できます。

.NET 4.6を必要とする機能の例は次のとおりです。

public void Foo(IReadOnlyCollection<string> input)
{
}

public void Main(string[] args)
{
    Foo(new Stack<string>());
}

.NET 4.6の場合Stack実装するIReadOnlyCollectionしかし、以前のバージョンではそうではありません。ターゲットプラットフォームとして.NET 4.5.2を選択した場合、上記のコードはコンパイルに失敗します。


  • .NET 4.6がインストールされていないマシンにこのコードをデプロイすることはできますか? 「.NETフレームワークの機能について話すときは、通常クラスが関係しています」という最後の文章には従っていません。 - what evAR
  • はい、そうです。デプロイメントマシンがVS2015でターゲットとしているものと互換性のあるフレームワークを持っている限り。 - Eric J.
  • @whatevAR:私は自分のコメントを機能の特定の例に拡張しました。これが変更点のリストですその他の例については、.NET Frameworkの新しいバージョンに固有のものです。そのページに表示されない場合は、利用することについて心配する必要があるものではありません。また、コンパイラは、機能が使用可能かどうかを判断することで信頼されています。 - Guvante
  • ただし、フレームワーク機能に支えられている言語機能もあります。使用できませんasync/awaitなしでIAsyncStateMachine、 例えば。 - Jon Hanna

リンクされた質問


関連する質問

最近の質問