0

dllB メソッドを呼び出すメイン プログラム A があります。

dllB はリリース モードでビルドされます。プログラム A がビルド (リリース/デバッグ) されているモードに応じて、結果は適切に返されるはずですが、常に「releaseMode」が返されます。

リリース モードで dllB を参照し、メイン プログラムの設定 (リリース/デバッグ) に応じて結果を取得する方法はありますか。

Program A---
main ()
{
  var dllbObj = new dllB();
  var response = dllObj.CallMethod();
 //Release mode should return "releaseMode" 
 //and debug mode should return "debugMode"
}

dll B---
public string CallMethod()
{
 string res;
#if DEBUG
            res = "debugMode";
#endif
            res = "releaseMode";

            return res;
}
4

2 に答える 2

1

A.exe と B.dll は互いに独立してコンパイルされるため、これを行う方法はありません。がBRelease でコンパイルされると、"debugMode"文字列は B.dll にどのような形でも存在しなくなります。コンパイラによって完全に無視されます。

A.exeデバッグ文字列またはリリース文字列を取得する唯一の方法B.dllは、コンパイル時に両方を一致させることです。デバッグで両方をコンパイルするか、リリースで両方をコンパイルしますが、混在させないでください。

于 2012-07-06T17:11:03.810 に答える
1

プラグマはコンパイル時にアセンブリに組み込まれるため、プラグマでこれを実現する方法はありません。2 番目のアセンブリがリリース モードでコンパイルされている場合、DEBUG セクションに配置された可能性のあるコードは含まれません。

于 2012-07-06T17:09:27.450 に答える