2017-07-31 9 views
1

.slnファイルでは、デフォルトの選択肢として「デバッグ」と「リリース」があります。私が理解していることは、あなたがやっているビルドの種類によって、ある種の「ビルド設定」が異なるのですか?ソリューション構成はVisual Studioでどのくらい正確に機能しますか?

私は最近、構成名を作成することにより認識されているようにシンボルを作成していないようでしたというのが私の独自の設定を作成して周りに演奏し、(私の驚きに多くを)見つけ:

#if MY_SHINY_NEW_SYMBOL 
    Console.WriteLine("TESTING MY SYMBOL"); 
#endif 

Microsoft docsに私はあなたが実際に(ちょうどConfiguration Managerの1を作成すると、おそらく別途)シンボルを定義することを可能にするためのコードがあることがわかります。

#define DEBUG 
// ... 

これらのシンボルは、作業を行うとどこに設定されている方法は?

私は誤って「ローカル」というシンボルを作成したので、私は尋ねています。私はそれを削除して、「ローカル」というシンボルを作成しました。そして、私は 'ローカル'シンボルがまだ存在し、別のケースを使用してシンボルで上書きすることができないように見えるので、コンパイルエラーが発生しています。

シンボルをまったく設定していないので、私はビルド前のイベントコマンドで変数$(ConfigurationName)を使用しています。

私は実際にはVisual Studioのバグだと確信しています。設定を削除して別のケースで同じ設定を再作成しても元の設定が再現されないと思います。

答えて

1

ビルド構成は、csprojファイルのMSBuildプロパティで参照できるMSBuild変数になります(実際には.NetプロジェクトファイルはMSBuildスクリプトです)。

特に、Visual Studioプロジェクトプロパティウィンドウでは、ほとんどのプロパティを(条件ブロックでラップすることによって)構成ごとに設定できます。特に

は、DEBUGシンボルは(あなたはすべてのcsprojファイルでこれが表示されますが、少し少ないシンプル)は次のように設定されている:

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> 
    ... 
    <DefineConstants>DEBUG;TRACE</DefineConstants> 
    ... 
</PropertyGroup> 

また、これを交換してのシンボルを設定することができます

<DefineConstants>$(Configuration)</DefineConstants> 

しかし、VSはプロジェクトファイルを保存すると変更される可能性があります。

+0

ありがとうございます - 私はVSが事実上MSBuildスクリプトを作成するためのUIであることを知りませんでした! (それはこれを表現する正しい方法ですか?) –

+0

@ZachSmith:はい(まあ、VSのその部分)。 – SLaks

関連する問題