我有一个主程序A,它调用dllB方法。
dllB是在发布模式下构建的。 根据程序A的构建模式(发布/调试),应该适当地返回结果,但它总是返回" releaseMode"。
有没有一种方法可以在发布模式下引用dllB,并根据主程序首选项(Release / Debug)获取结果。
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;
}
答案 0 :(得分:1)
使用pragma无法实现这一点,因为它们在编译时被编入程序集。如果第二个程序集是在发布模式下编译的,则它不包含任何可能放在DEBUG部分中的代码。
答案 1 :(得分:1)
由于A.exe和B.dll彼此独立编译,因此无法实现此目的。在Release中编译B
时,{d}中的"debugMode"
字符串将不会以任何形式或形式存在于B.dll中。它完全被编译器忽略。
让A.exe
从B.dll
获取调试或释放字符串的唯一方法是让它们在编译时匹配。可以在Debug中编译它们,也可以在Release中编译它们,但不要混合它们。