Pragma用于跨dll

时间:2012-07-06 17:08:02

标签: c# pragma

我有一个主程序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;
}

2 个答案:

答案 0 :(得分:1)

使用pragma无法实现这一点,因为它们在编译时被编入程序集。如果第二个程序集是在发布模式下编译的,则它不包含任何可能放在DEBUG部分中的代码。

答案 1 :(得分:1)

由于A.exe和B.dll彼此独立编译,因此无法实现此目的。在Release中编译B时,{d}中的"debugMode"字符串将不会以任何形式或形式存在于B.dll中。它完全被编译器忽略。

A.exeB.dll获取调试或释放字符串的唯一方法是让它们在编译时匹配。可以在Debug中编译它们,也可以在Release中编译它们,但不要混合它们。