c# – 在编译期间是否只包含某些表单

我们正在开发两个版本的应用程序.不是应用程序的精简版和标准版,其中一个版本将具有有限的功能等.我们将在应用程序中实际显示不同类型的信息,具体取决于版本(这是我可以描述它的最佳方式)进入太多细节).

为了区分我们考虑使用条件属性和#if指令的应用程序的两个版本(如果有任何其他选项或比这两个更好的方法,我愿意接受建议).经过一些研究和辩论后,我们决定采用#if方法,因为在编译过程中不会包含不必要的代码(而条件属性只会删除对不符合条件的方法调用,但仍然包括方法……如果我没有记错的话).我意识到这两者并不是相互排斥的,所以如果需要,我们总能混合搭配.

无论如何……我们现在想知道的是,如果有一种方法在编译期间只包含某些窗体,基于我们正在编译的应用程序版本.我们已经拆分了所有逻辑,因此表单实际上只是表单,其中包含很少的代码(大多数只是调用处理所有业务逻辑的表单管理器类).表单管理器类将包含其中的一些#if语句,因此代码可以在应用程序的两个版本中重用,尽可能(而不是制作两个类并在类上放置条件属性…尽管可能这是我们应该考虑的事情).

有人知道这样做的好方法吗?

TIA

更新:

只是我们实际决定做的一个FYI.我们将表单的不同版本放入单独的命名空间中,然后只需在命名空间的#if语句中使用管理所有表单的类顶部的语句.工作得相当光滑,非常轻松的工作.

解决方法

我是用图书馆项目做的.我生成一个项目(.csproj),然后在该项目中包含现有的源代码.在VS2008中,右键单击新项目,单击“添加现有项目…”,然后单击“添加”,使用选择箭头选择“添加链接”.

Add as Link将包含对现有源的引用,而不是复制源模块,而不是复制源模块.这样您就可以拥有N个项目,每个项目都有不同的源模块组合.我将它与通用模块源中的#if语句一起使用,以生成不同版本的库.

Add Existing Item http://www.freeimagehosting.net/uploads/th.eff09391e9.png
full image

Add as Link http://www.freeimagehosting.net/uploads/th.f12b764887.png
full image

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...