Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编译VisualStudio解决方案时筛选DLL项目中的功能_C#_Visual Studio_Dll_Compilation_Conditional Compilation - Fatal编程技术网

C# 编译VisualStudio解决方案时筛选DLL项目中的功能

C# 编译VisualStudio解决方案时筛选DLL项目中的功能,c#,visual-studio,dll,compilation,conditional-compilation,C#,Visual Studio,Dll,Compilation,Conditional Compilation,我的工作环境是在VisualStudio中有两种解决方案。每种解决方案都将构建不同的应用程序。它们中的每一个都有一个启动项目,即它们各自的UI,并且两个解决方案都使用相同的项目(来自其他存储库)作为功能的基本结构 然后,每个解决方案由一个UI项目和一个构建DLL的非UI项目组成 由于应用程序不同(每个应用程序针对不同的客户),并且每个应用程序都将启用某些功能,但不是所有功能,而且我不想用所有代码编译非UI DLL,我需要能够用每个应用程序所需的代码编译解决方案 更准确地说,假设基本项目(DLL)

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

然后,每个解决方案由一个UI项目和一个构建DLL的非UI项目组成

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

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

你能告诉我实现这一目标的正确方向吗

提前感谢你们所有人

试着看看这个

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

试着看看这个

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


感谢Pribina,这是我当前的解决方案,但我正在尝试找到不同的选项,因此该解决方案可以更具可扩展性。如果将来我们有两个以上不同的UI,使用这些指令就不会太干净了。我仔细研究了一下,发现了一个代码项目,再次感谢Pribina。我不完全确定这是否对我有用。我主要关心的是有一个UI来创建这些条件编译符号,根据它们,生成DLL的项目编译部分代码或整个代码,但我需要的是DLL项目不需要从UI知道任何东西。你能提供一些UI示例吗?你使用的是什么用户界面?MVC?我正在使用WPF,所以我有一个带有主窗口的项目,它实例化了基础项目,它编译DLL我需要的是,根据主窗口中的配置,DLL上的编译是不同的Hanks Pribina这是我当前的解决方案,但我正试图找到不同的选项,因此,该解决方案可以更具可扩展性。如果将来我们有两个以上不同的UI,使用这些指令就不会太干净了。我仔细研究了一下,发现了一个代码项目,再次感谢Pribina。我不完全确定这是否对我有用。我主要关心的是有一个UI来创建这些条件编译符号,根据它们,生成DLL的项目编译部分代码或整个代码,但我需要的是DLL项目不需要从UI知道任何东西。你能提供一些UI示例吗?你使用的是什么用户界面?MVC?我正在使用WPF,所以我有一个带有主窗口的项目,它实例化了基本项目,它编译DLL。我需要的是,根据主窗口中的配置,DLL上的编译是不同的
#if defined(FEATUREONE)  
    feature1();  
#elif defined(FEATURETWO)  
    feature2();  
#else  
    Default();  
#endif