2017-06-14 109 views
0

我的工作环境是我在Visual Studio中有两个解决方案。这些解决方案中的每一个都将构建不同的应用他们每个人都有启动项目,即他们每个人的UI,两个解决方案都使用同一个项目(来自其他存储库)作为功能的基本结构。在编译VisualStudio解决方案时从DLL项目中过滤功能

然后,每个解决方案都包含一个UI项目和一个构建DLL的非UI项目。由于应用程序是不同的(每个应用程序都是针对不同的客户),并且它们中的每一个都会启用一些功能,但不是全部,所以我不想编译所有的非UI UI DLL代码,我需要能够为每个应用程序仅编译所需的代码。

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

你能指出我在正确的方向来实现吗?

在此先感谢大家!

回答

0

试着看看这个。

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

MSDN

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

由于普里比纳 这是我目前的解决方案,但我试图找到不同的选项,所以解决方案可以更具可扩展性。 如果将来我们有超过两个不同的用户界面,使用这些指令不会太干净 –

+0

我深入了解它,我发现一个代码项目https://www.codeproject.com/Articles/451734/Visual -Studio-Use-Conditional-Compilation-to-Contr – Pribina

+0

再次感谢Pribina。 我不完全确定这是否适合我。 我的主要情况是有一个创建这些条件编译符号的UI,并根据它们生成DLL的项目编译代码的一部分或整个代码 但我需要的是DLL项目不需要从UI知道任何东西 –

相关问题