【问题标题】:Filter features from a DLL project while compiling VisualStudio solution在编译 VisualStudio 解决方案时从 DLL 项目中过滤功能
【发布时间】:2017-11-16 04:24:55
【问题描述】:

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

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

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

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

您能否指出实现这一目标的正确方向?

提前感谢大家!

【问题讨论】:

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


    【解决方案1】:

    试着看看这个。

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

    来自MSDN

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

    【讨论】:

    • 感谢 Pribina 这是我目前的解决方案,但我正在尝试寻找不同的选项,因此该解决方案可能更具可扩展性。如果将来我们有两个以上不同的 UI,使用这些指令不会太干净
    • 我稍微研究了一下,发现了一个代码项目codeproject.com/Articles/451734/…
    • 再次感谢普里比娜。我不完全确定这是否对我有用。我主要关注的是有一个创建这些条件编译符号的 UI,并且根据它们,生成 DLL 的项目编译部分代码或整个代码但我需要的是 DLL 项目不需要知道用户界面中的任何内容
    • 你能提供一些 UI 的例子吗?您使用 WebForms 的 UI 是什么? MVC?
    • 我正在使用 WPF,所以我有一个带有主窗口的项目,它实例化了编译 DLL 的基础项目我需要的是根据主窗口中的配置, DLL上的编译不同
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多