web-dev-qa-db-ja.com

VisualStudioで.NETCoreプロジェクトのターゲットフレームワークを切り替える方法

次のような.NETCoreプロジェクトがあるとします。

"frameworks": {
    "net40": {},
    "dotnet5.1": {}
}

そしてこれはあなたのC#コードです:

public class Foo
{
    public static void Blah()
    {
#if DOTNET5_1
        DoSomething();
#Elif NET40
        DoSomethingElse();
#endif
    }
}

これで、VisualStudioで.csファイルを表示すると、#ifセクションの1つがグレー表示されます-DoSomethingまたはDoSomethingElse。これが私のラップトップにどのように表示されるかです:

enter image description here

VSにターゲットプラットフォーム間で「コンテキストの切り替え」を行わせて、特定のプラットフォーム用にコンパイルされるものを表示することは可能ですか?たとえば、実際にソリューションを構築する前に、各フレームワークの赤い波線を確認したい場合があります。

助けていただければ幸いです、ありがとう!

11
James Ko

エディタの上部にはナビゲーションバーがあります。ナビゲーションバーの左側には、コンテキストを選択できるドロップダウンメニューがあります。

ナビゲーションバーが非表示になっている場合は、[ツール]> [オプション]> [テキストエディター]> [C#]に移動し、ナビゲーションバーのチェックボックスをオンにして有効にできます。

18
mstaessen

すでに提供されている答えはほとんど正しいようです。現在それに関して存在するいくつかの問題を強調したいと思います。

本日現在、VS 2015 Community Edバージョン14.0.25424.00アップデート3、global.jsonsdk 1.0.0-preview2-003121では、ナビゲーションバーに複数のターゲットが表示されるのは、スタートアッププロジェクトは、マルチターゲットの「実行可能」プロジェクトです(コンソールアプリなど)。

multi-target switcher visible

マルチターゲットクラスライブラリで起動が設定されている場合、ターゲットスイッチは表示されません(緑色の矢印の横のラベルも異なります)。

multi-target switcher not visible

また、スイッチャーを使用できる場合、「標準」の条件付き定義 ビルドシステムによって提供される がエディターで正しく強調表示されていないようです。

enter image description here

条件付き定義ブロックが正しく強調表示されるようにするには、最後のスクリーンショットで緑色で強調表示されているプロジェクトスイッチャーを切り替える必要があります。同じプロジェクト内の異なるターゲットは、この目的のために異なるプロジェクトとして扱われるようです。そして、それはエディターで開いているファイルごとに独立して変更できます。

8
superjos