繁体   English   中英

在Visual Studio中的项目参考中更改条件编译

[英]Changing Conditional Compilation in project reference in Visual Studio

我有一个类库A,该类库在解决方案中的其他项目(如B和C)中使用。

基于预处理指令的存在,类库A的行为有所不同,例如:

#if some_directive
      // some code
#else
      // some other code
#end

如何在启用了some_directive项目B中使用类库A,而在禁用了some_directive项目C中使用类库A?

您可以使用ConditionalAttribute做类似的事情

这是Debug.WriteLine()是否存在的方式,具体取决于“ DEBUG”符号的存在。

您将能够为用于控制代码是否存在的条件符号定义自己的名称。

然后,可以将该符号放入要在其中进行代码的项目的项目属性“构建”选项卡上“条件编译符号”设置中的列表中。

不幸的是,这不允许您拥有“其他代码”部分,并且它仅适用于整个方法。

似乎当前不支持此功能。 根据这篇文章

该语言不支持通过预处理器宏进行引用的概念。 您可以使用msbuild文件并更改基于msbuild参数添加的引用集。

我使用的另一个解决方法是在“配置管理器”中使用解决方案配置 我为构建每个项目B或C创建了两个配置,这些配置仅在其中一种配置中启用了预处理程序指令。

我知道这个话题很老-对我来说,以下方法很好用,也可能适用:欢迎对此方法的(缺点)评论。 如果将.cs文件作为现有项目添加为每个项目的链接-可以使用不同的指令对其进行编译。若要将现有项目添加为链接文件,请参见此帖子的屏幕快照使用文件夹来组织链接文件。

// file ClassA.cs

namespace HelperClasses
{
     public ClassA
    {
    #if some_directive
      // some code
    #else
      // some other code
    #end
    // ....
    }
}

// using statement in Project B and C
using HelperClasses
// Add ClassA.cs in both Projects B and C
// as exiting, linked File -- not as a Reference
// set the compiler-Directives according your needs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM