C# Pragma在跨dll中的使用

C# Pragma在跨dll中的使用,c#,pragma,C#,Pragma,我有一个调用dllB方法的主程序a dllB是在发布模式下构建的。 根据构建(发布/调试)程序的模式,结果应适当返回,但它始终返回“releaseMode” 因此,有没有一种方法可以在发布模式下引用dllB,并根据主程序首选项(发布/调试)获得结果 Program A--- main () { var dllbObj = new dllB(); var response = dllObj.CallMethod(); //Release mode should return "relea

我有一个调用dllB方法的主程序a

dllB是在发布模式下构建的。 根据构建(发布/调试)程序的模式,结果应适当返回,但它始终返回“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;
}

使用pragmas无法实现这一点,因为它们是在编译时烘焙到程序集中的。如果第二个程序集是在发布模式下编译的,则它不包含任何可能放在调试节中的代码。

由于a.exe和B.dll是独立编译的,因此无法实现这一点。当
B
在发行版中编译时,
“debugMode”
字符串将不会以任何形式存在于B.dll中。编译器会完全忽略它


A.exe
B.dll
获取调试或发布字符串的唯一方法是让它们在编译时匹配。要么在Debug中编译,要么在Release中编译,但不要混用

谢谢Darin,但是使用2个DLL的最佳方式是什么?一个用于调试,一个用于发布。你能建议一下吗?如果你有第二个程序集的源代码,你可以根据主程序集的模式重新编译它。如果没有,那么您就没有调试模式下此辅助程序集的源代码,因此您无法执行任何操作。