我编写了一个 Visual Studio C# 项目,我需要创建两个可执行文件,一个用于“精简版”,一个用于同一项目的“完整版”。
“精简版”将是完整版的精简版,因此我想共享所有内容(代码、资源等),并且如果可能的话,使用编译指令来隔离代码块。
你能告诉我一种以干净的方式做到这一点的方法吗?
我编写了一个 Visual Studio C# 项目,我需要创建两个可执行文件,一个用于“精简版”,一个用于同一项目的“完整版”。
“精简版”将是完整版的精简版,因此我想共享所有内容(代码、资源等),并且如果可能的话,使用编译指令来隔离代码块。
你能告诉我一种以干净的方式做到这一点的方法吗?
您可以在项目中创建一个新的条件编译符号(比如FULLVERSION
)。使用Configuration Manager创建新的解决方案配置(例如 ReleaseFullversion),并在此配置中定义常量。FULLVERSION
然后你可以用
#if FULLVERSION
...
#end if
或使用条件属性
[Conditional("FULLVERSION")]
void MyMethod()
{...}
为您的应用程序创建精简版。
如果未设置常量,这些#if
-blocks中的代码和这些Conditional
属性将不会编译到您的程序集中(这些属性实际上只是删除了对该代码块的调用)。FULLVERSION
Conditional
然后,您可以构建解决方案的精简版本,或者构建包含完整代码的完整版本。
您可以使用 Visual Studio Post Build事件,从批处理调用DEVENV.EXE
到您的项目,使用一些特殊参数,使其以不同的方式编译。
要在 Visual Studio 中完成这一切,你需要一些奇怪的仪式,这对于任何只看你的项目的人来说都有点不明显,所以找出一个训练方案来确保每个人都知道发生了什么是很重要的。
首先,右键单击您拥有的解决方案并转到属性。单击“配置管理器”并进行新配置。称它为“Lite”或任何你喜欢的东西。
然后,您可以右键单击解决方案中的每个项目来设置您需要的条件编译属性。然后,您可以使用条件编译符号来隔离什么是“完整”和什么是“精简”。
完全配置后,它将出现在 Visual Studio 的 UI 顶部 - 您通常会在其中看到 Debug 和 Release,现在您将看到 Lite 或您刚刚配置的任何内容。