在编译VisualStudio解决方案时过滤DLL项目中的功能

时间:2017-06-14 06:58:18

标签: c# visual-studio dll compilation conditional-compilation

我的工作环境是我在Visual Studio中有两个解决方案。每个解决方案都将构建不同的应用程序。他们每个人都有启动项目,即每个项目的UI,两个解决方案都使用相同的项目(来自其他存储库)作为功能的基础结构。

然后每个解决方案都包含一个UI项目,以及一个构建DLL的非UI项目。

由于应用程序不同(每个应用程序都是针对不同的客户),并且每个应用程序都将启用某些功能,但不是所有功能,并且我不想使用所有代码编译非UI DLL ,我需要能够只使用每个应用程序所需的代码来编译解决方案。

更准确地说,假设基础项目(DLL)有三个特征:A,B和C. 我希望能够配置解决方案,因此UI项目1仅使用功能A和B编译DLL,而UI项目2仅编译启用了功能C的DLL。

你能指出我正确的方向来实现这个目标吗?

先谢谢大家!

1 个答案:

答案 0 :(得分:0)

试着看看这个。

  

带#elif,#else和#endif指令的#if指令控制源文件各部分的编译。如果您编写的表达式(在> #if之后)具有非零值,则紧跟在#if指令>之后的行组将保留在翻译单元中

来自MSDN

#if defined(FEATUREONE)  
    feature1();  
#elif defined(FEATURETWO)  
    feature2();  
#else  
    Default();  
#endif