为了区分我们考虑使用条件属性和#if指令的应用程序的两个版本(如果有任何其他选项或比这两个更好的方法,我愿意接受建议).经过一些研究和辩论后,我们决定采用#if方法,因为在编译过程中不会包含不必要的代码(而条件属性只会删除对不符合条件的方法的调用,但仍然包括方法……如果我没有记错的话).我意识到这两者并不是相互排斥的,所以如果需要,我们总能混合搭配.
无论如何……我们现在想知道的是,如果有一种方法在编译期间只包含某些窗体,基于我们正在编译的应用程序版本.我们已经拆分了所有逻辑,因此表单实际上只是表单,其中包含很少的代码(大多数只是调用处理所有业务逻辑的表单管理器类).表单管理器类将包含其中的一些#if语句,因此代码可以在应用程序的两个版本中重用,尽可能(而不是制作两个类并在类上放置条件属性…尽管可能这是我们应该考虑的事情).
有人知道这样做的好方法吗?
TIA
更新:
只是我们实际决定做的一个FYI.我们将表单的不同版本放入单独的命名空间中,然后只需在命名空间的#if语句中使用管理所有表单的类顶部的语句.工作得相当光滑,非常轻松的工作.
我是用图书馆项目做的.我生成另一个项目(.csproj),然后在该项目中包含现有的源代码.在VS2008中,右键单击新项目,单击“添加现有项目…”,然后单击“添加”,使用选择箭头选择“添加为链接”.Add as Link将包含对现有源的引用,而不是复制源模块,而不是复制源模块.这样您就可以拥有N个项目,每个项目都有不同的源模块组合.我将它与通用模块源中的#if语句一起使用,以生成不同版本的库.
Add Existing Item http://www.freeimagehosting.nethttp://img.558idc.com/uploadfile/th.eff09391e9.png
full image
Add as Link http://www.freeimagehosting.nethttp://img.558idc.com/uploadfile/th.f12b764887.png
full image