5

Visual Studio を期待どおりに動作させるのに問題があります。2 つの構成プロファイルを作成しました。1 つはシンボル FOO が定義されており、もう 1 つはシンボル BAR が定義されています。そして、私はこのコードを持っています:

static class MyClass{
#if FOO
  public static string const MyData="foo defined";
#endif
#if BAR /*yes, I know #elif would work here too.. just trying to be simple*/
  public static string const MyData="bar defined";
#endif
}

そして後で私が持っている別のファイルで

 if(MyClass.MyData=="foo defined").....

私のアプリケーションでは、MyClass.MyData が定義されていないというエラーが表示されます。

また、FOO プロファイルにそれがあり#error test#if FOOその後のようなものを入力すると、ビルド エラーが発生しますが、それを削除すると問題なくビルドされ、実行するとコンパイル エラーが発生します。 MyClass には MyData の定義が含まれていません。また、これは ASP.Net Web アプリケーションです。

誰かが条件付きコンパイルの使用方法を理解するのを手伝ってくれますか? Visual Studio がコンパイル シンボルを使用して適切にコンパイルするかのように動作しますが、ASP.Net Web サーバーがそれを実行するたびに、シンボルなしで再コンパイルします...

編集: FOO または BAR プロファイルを使用するかどうかは問題ではありません。どちらも MyData シンボルを適切に定義していないようです。

EDIT2:

わかりました、これは再生にとって重要です!!! ソリューションに新しいApp_Codeフォルダーを作成し、そこに .cs ファイルを追加してから、MyClass を追加します。これにより、空のプロジェクトで動作するバグが再現されます。私は実際にそれを単純化しました

#if !(FOO || BAR)
  #error neither foo or bar defined
#endif

Visual Studio が App_Code 内の通常の .cs ファイルの条件付きコンパイル シンボルを設定していないようです。

4

1 に答える 1

6

ASP.NET は開発環境の外部でコードをコンパイルするため、独自のビルド構成を使用します。web.config で条件付きコンパイル シンボルを設定する必要があります。次のリンクを参照してください: ASP.NET 2.0 での条件付きコンパイル

于 2009-12-30T17:08:08.603 に答える