繁体   English   中英

Visual Studio / C#Windows App中的配置和程序功能

[英]Configurations and Program features in Visual Studio/C# Windows App

我有一个Windows应用程序(VS2005 / C#),它有两个版本:Enterprise和Pro。 在Pro版本中,某些功能和菜单被禁用。 当前,我通过注释掉禁用代码以创建企业版来做到这一点,然后将每个可执行文件复制到另一个位置。 显然,这个过程充满了危险……:)

我想为我的两个可执行文件提供两个文件夹,Visual Studio应该放置代码以禁用专业版中的功能,并将每个功能放置在其正确的文件夹中。 我有一些安装程序项目,可以从那里获取文件,并为两个版本制作安装程序。 该部分已经在工作,但是在构建安装程序之前,我正在将两个可执行文件手动复制到正确的文件夹中。 真烂...

我想做的是这样的:

#ifdef PROVERSION
part1.disable();
part2.disable();
#endif

Visual Studio是否可以实现???

注意,我的总体目标是使创建两个安装程序的过程自动化。

是的,那肯定是可能的。 Visual Studio解决方案默认情况下具有两种配置。 (发布和调试)。 您可以创建其他诸如“ EnterpriseDebug”和“ EnterpriseRelease”之类的文件。只需转到(Build | Configuration Manager)下的Configuration Manager,然后选择<New ...>。

默认情况下,配置管理器将创建一个以配置命名的文件夹,并将已编译的二进制文件放入其中。 您将必须手动设置条件编译符号,并使用(#if)语句添加/删除功能。

从BUILD菜​​单中,选择配置管理器选项

在活动的解决方案配置下拉列表中,选择“新建”

创建两个新的“配置”,一个用于PRO,一个用于ENTERPRISE

关闭配置管理器。

打开项目属性(从项目上下文菜单中)选择构建选项卡

选择PRO配置(从CONFIGURATION下拉列表中)

在条件编译符号文本框中输入编译常量“ PROVERSION”。

现在您要做的就是从主工具栏上的config下拉列表中选择要构建的配置,然后进行构建。

当您使用PRO配置来构建PRO时,分散在整个代码中的编译器编译指示(#IF PROVERSION)将包含限制功能集的代码。

如果您想在ENTERPRISE版本中专门包含ENTERPRISE功能(也可以在PRO版本中禁用企业功能),则还可以考虑为ENTERPRISE配置设置ENTERPRISE常量。

您可以创建一个新的条件编译常量并定义PROVERSION

为什么不创建一个单独的程序集来启用/禁用所需的功能? 然后只包含特定版本的适当程序集...

您使用哪种类型的许可方案。 我已经完成了一些应用程序,因为许可证密钥激活了功能集,因此您实际上只有一个可执行文件。

我会考虑使其完全动态,这样您就不必在编译时或构建安装程序/部署程序包时做任何特别的事情。 这是我要在商业winforms应用程序中执行的方法...对此没有任何科学意义,但是它有效:

  1. 有一个许可方案/机制/标志,可以告诉您当前用户是否已获得Pro或Enterprise许可。 您甚至可以使用“试用”或“评估”选项。

  2. 设置一个CurrentUser对象(或类似对象)以告知您当前用户的许可证级别。 这应该在整个应用程序中都可以访问。

  3. 使用插件模型,以便功能/组件/功能是应用程序中的插件。 当应用程序的主外壳打开时,您会将插件加载到应用程序中-使插件以所需的方式显示在UI中。

  4. 研究创建可修饰代表插件的类的自定义属性 该属性应指示该插件/功能所需的最低许可证。 当插件加载程序遇到新插件时,请检查该插件的属性以查看需要什么级别的许可证。 如果当前用户达到(或超过)该许可证,则将其加载。 如果没有,您就不会。

  5. 如果您无法将功能/选项/工具分成可以轻松模块化为插件的内容,则仍可以使用CurrentUser许可级别来检查内容。 例如,假设Pro版本(而非企业版)中有100个“小部件”的限制:

例如:

enum LicenseLevel {
  Eval = 0,
  Pro = 1,
  Enterprise = 2
}

// later...    

for(i=0; i < widgets.Count; i++) {
  if (i == 100 && CurrentUser.LicenseLevel < LicenseLevel.Enterprise)
    break;
  // do stuff
}

希望以上内容能与您所需要的结合。

me.yahoo.com的家伙就在现场。

您可以使用编译时定义创建多个配置。

您还可以更改构建输出目录。 默认情况下,您可能具有bin / debug和bin / release。 没有什么可以阻止您拥有bin / pro和bin / enterprise输出文件夹(例如)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM