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

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

于 2012-07-06T17:09:27.450 回答
1

没有办法做到这一点,因为 A.exe 和 B.dll 是相互独立编译的。当B在 Release 中编译时,"debugMode"字符串根本不会以任何形状或形式存在于 B.dll 中。它被编译器完全忽略。

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

于 2012-07-06T17:11:03.810 回答