6

B や C など、私のソリューションの他のプロジェクトで使用されるクラス ライブラリ A があります。

クラス ライブラリ A は、プリプロセッサ ディレクティブの存在に基づいて異なる動作をします。たとえば、次のようになります。

#if some_directive
      // some code
#else
      // some other code
#end

some_directiveクラス ライブラリ A をプロジェクト B で有効にして使用し、プロジェクト C で無効にして使用するにはどうすればよいsome_directiveですか?

4

3 に答える 3

2

現在、この機能はサポートされていないようです。この投稿によると:

この言語は、プリプロセッサ マクロによる参照の概念をサポートしていません。できることは、msbuild ファイルを使用して、msbuild パラメーターに基づいて追加された参照のセットを変更することです。

私が使用した別の回避策は、「構成マネージャー」でソリューション構成を使用することでした。各プロジェクト B または C をビルドするための 2 つの構成を作成しました。これらの構成の 1 つだけでプリプロセッサ ディレクティブが有効になっています。

于 2013-07-23T07:46:34.267 に答える
2

を使用して、このようなことを行うことができますConditionalAttribute

これはDebug.WriteLine()、「DEBUG」シンボルの存在に応じて存在または非存在する方法です。

コードの有無を制御するために使用する条件記号に独自の名前を定義できます。

次に、そのシンボルを、コードが必要なプロジェクトのプロジェクト プロパティの [ビルド] タブの [条件付きコンパイル シンボル] 設定のリストに追加できます。

残念ながら、これは「他のコード」部分を持つことを許可しません。また、メソッド全体にのみ適用されます。

于 2013-05-14T09:06:14.660 に答える
0

私はこのトピックが古いことを知っています-私にとっては、次のアプローチがうまく機能し、同様に適合する可能性があります。.cs ファイルを既存の項目として各プロジェクトへのリンクとして追加する場合、さまざまなディレクティブでコンパイルできます。既存の項目をリンクされたファイルとして追加するには、この投稿のスクリーンショットを参照してください 。

// file ClassA.cs

namespace HelperClasses
{
     public ClassA
    {
    #if some_directive
      // some code
    #else
      // some other code
    #end
    // ....
    }
}

// using statement in Project B and C
using HelperClasses
// Add ClassA.cs in both Projects B and C
// as exiting, linked File -- not as a Reference
// set the compiler-Directives according your needs
于 2017-05-09T10:11:04.980 に答える