不同项目的预处理程序指令

时间:2017-03-16 20:31:42

标签: c#

现在,在此标记为重复之前,我看到了othersimilarrelated个问题,但我认为它们并不适合我的情景。

我正在处理写得不好的邪恶代码,我别无选择,只能在单元测试中使用。它本质上是一个读取和合并一些特殊格式化配置文件的库。现在在代码中假设它将从可执行应用程序中使用,因此它尝试加载.exe配置文件。显然,如果从单元测试中使用它就不是这种情况,因此抛出异常会失败。

为了克服这个限制,我想使用preprcessor指令在单元测试项目中使用时更改代码的某些部分。

假设我有3个项目。

  1. 类库项目 - >的
  2. 控制台应用程序项目 - > Proj1 (参考邪恶
  3. 单元测试项目 - > 测试1 (参考 Proj1 邪恶
  4. 测试1 & 邪恶定义了额外的UNITTEST符号(构建标签 - >条件编译符号),邪恶包含一些此类代码

    #if !UNITTEST
    // do evil stuff
    #else
    // do stuff for unit test
    #endif
    

    现在我想要的是在 Test1 项目的测试类中定义#UNITTEST并将其反映在 Evil 项目中。

    从我在其他答案中看到的 - 唯一建议的方法是为每种情况构建适当的符号(在运行单元测试时,在本地调试时,在准备发布包时),这看起来很麻烦。

    我正在寻找的是一种减少手动干预的方法,并且能够轻松获得我需要的版本。例如,当我构建并且 Test1 定义了UNITTEST符号时,邪恶也会使用UNITTEST符号构建(并复制到 Test1的输出)和 Proj1 将始终引用基于 Proj1的DEBUGRELEASE构建的 Evil 版本设置。

    有没有办法实现这个目标?

    我愿意接受其他建议来解决问题。 不幸的是,用其他东西重构/替换邪恶不是一种选择(现在无法完成的太多努力)。

0 个答案:

没有答案