ユーザーの承認のために、ユーザーごとに特定のモジュールのみを含める必要があります。だから私はこの定数に基づくVisual Studioの条件付きプロジェクトの参照
<DefineConstants>TRACE;DEBUG;SAMPLECONSTANT1</DefineConstants>
などの条件付きコンパイルを構成し、このようなプロジェクトファイルを編集した:私はDefineConstants
がSAMPLECONSTANT1
が含まれている場合Module1
をプロジェクトへの参照を追加したい。このケースでは
<ProjectReference Include="..\Solution1.Modules.Module1\Solution1.Modules.Module1.csproj" Condition="$(DefineConstants.Contains('SAMPLECONSTANT1'))">
<Project>{4E378BD0-4FF8-4160-9331-1ECBFD2B6F30}</Project>
<Name>Solution1.Modules.Module1</Name>
</ProjectReference>
を。 DefineConstants
に何を置いても、ソリューションは常にModule1
プロジェクトを読み込みます。私はここで何が間違っていたのですか?
更新:実際には私のコードは正しいです。 J0e3ganの答えを見てください。 Visual Studio UIは、プロジェクトのReferences
フォルダ内の条件付き参照を反映しません。したがって、すべての参照は、任意の構成またはプラットフォームの選択で表示されます。一方、コンパイラとIntelliSenseは条件付き参照を認識しており、ビジュアルフィードバックとビルド時のエラー通知の両方で正しい設定を尊重します。私は問題があると思われる
詳細を教えてください。 –
こんにちはCuong Le、私はちょうど私の質問を更新します。DefineConstantsには、DefineConstants、ソリューションに入れたものは何でも、プロジェクトModule1への参照を追加します。いつもモジュール1のプロジェクトをロードしてください –
私はあなたが時間をコンパイルするのではなく、実行時にモジュールをロードする方が良いでしょう。リフレクションやMEFを使ってこれを行うことができます。 –