如何在一个解决方案中编写Light,Pro,Ultimate三个版本

Hen*_*y99 8 c# asp.net build visual-studio-2008

我想知道如何最好地在VS2008 Professional(包括Web部署项目)中编写三个不同版本的C#ASP.NET 3.5应用程序.我有我的应用程序的Light,Pro和Ultimate版本(或版本).目前我在配置管理器中使用了三个构建版本的所有解决方案,并且我在整个代码中使用预处理器指令(在一万行代码中有大约20个这样的构造,所以它是可以监视的):

#if light
//light code
#endif
#if pro
//pro code
#endif //etc...
Run Code Online (Sandbox Code Playgroud)

我已经在stackoverflow中读了好几个小时,并且想过要遇到微软是如何使用不同的Windows版本来做这件事的,但没有找到我的预期.关于预处理器指令是否是邪恶的,在某个地方有很多讨论.

我喜欢那些#if-directives是:

  • 差异的并排代码,所以我会在六个月后理解不同版本的代码
  • 并且不向客户提供其他版本的编译代码的特殊好处.

好的,详尽的解释,重复的问题:最好的方法是什么?

Bri*_*new 7

我很想在运行时使用不同的许可证管理差异,并使用该配置启用/禁用功能.为什么?

  1. 你只需构建一个可部署的.
  2. 你可以更容易地进行单元测试,而不是构建3个版本并测试它.
  3. 用户可以升级并简单地发送新许可证.他们不必升级/重新安装.

您必须权衡您对分发客户实际未支付的解决方案的担忧(并且可以通过适当安全的许可证密钥启用).