为多个版本的产品开发代码库

时间:2009-01-01 05:59:50

标签: .net scripting build-process

我知道这是可能的,因为有太多的软件包,你有一个软件包的“标准”,“专业”和“企业”版本...但是有没有人有关于如何使用uISV的任何体面的教程会不会学习开发分层功能软件所涉及的技术?

我已经通过您通常使用的不同频道(谷歌,MSDN等)进行了多次搜索,但到目前为止已经空了。

任何想法/建议都将不胜感激。

THX。

6 个答案:

答案 0 :(得分:2)

最简单的方法是创建一个包含所有功能的程序,并根据产品密钥启用/禁用它们。

第二个选项可能是为您的程序创建一个minumum sceleton,并使用一个加载项架构来添加更多功能。这意味着您只能部署部署版本所需的部分。

使用.net,您可以查看System.AddIn命名空间或反射内容......

答案 1 :(得分:1)

我会选择更简单的解决方案:

  • 将您的代码放入程序集
  • 创建仅包含主窗体的shell项目,每个版本都包含菜单和工具栏。菜单和工具栏应仅从程序集激活表单/功能。

这样您就不需要配置文件来启用/禁用功能,如果您将所有内容都放在一个应用程序中,则没有“功能访问”代码。此外,您的用户不可能破解您的应用程序或密钥并访问他未支付的功能。

缺点是您只能通过发送新密钥将用户从“标准”升级到“专业”,用户必须下载并安装新的应用程序。

答案 2 :(得分:0)

您可能希望在.Net成员资格提供程序中查看基于角色的安全性(假设它是一个Web应用程序)。您可以添加角色“第1层”和“第2层”,也可以为层允许用户的每个功能添加角色。然后在实现分层功能的页面上,如果是user.IsInRole(“featurename”),则显示它。

答案 3 :(得分:0)

这取决于您希望阻止用户使用哪些功能。 如果你的所有功能都是独立的,那么Bramha的解决方案是一个很好的解决方案,但如果你的功能不是,那么这是一个完全不同的故事,你需要开发一个内部“框架”,它将允许抽象每个功能。

答案 4 :(得分:0)

我可能会使用编译器指令分离这些功能。这样,您就拥有一个代码库,但可以“编译”应用程序中的几个不同功能。如果您编译所有内容并使用不同的串行密钥分离功能,盗版将会非常容易。毕竟,如果它们不在那里,那些功能就无法通过躲避连续剧来解锁。

答案 5 :(得分:0)

从软件盗版的角度来看,您可能希望使用条件编译(使用#define and #if)或单独的程序集 - 基本上:如果某个功能在标准版或试用版中不可用,请不要禁用它,但要删除它完全。

如果您尝试使用某种全局枚举“LICENSETYPE {Standard,Enterprise}”,请记住,Crack.net看起来像{{3}},可以轻松更改它。

另一方面:只有一个包含所有功能的可执行文件并基于每个键启用/禁用它们使部署和版本管理变得更加容易。