在 Visual Studio .NET 2003 中支持同一组件的多个版本

翻译|其它|编辑:郝浩|2004-02-04 12:40:00.000|阅读 1721 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

Izzy Gryko
Visual Studio Team
Microsoft Corporation
2003年7月

适用于:
   Microsoft? Visual Basic? .NET 2003

摘要:本文介绍在单个计算机上,如何在 Visual Studio .NET 2003 中支持同一组件的多个版本。(本文包含一些指向英文站点的链接。)

目录

简介

如果您支持同一组件的多个版本,则您的用户可以执行以下操作:

  • 在并行安装了 MyComponent 版本 1.0 和 MyComponent 版本 2.0 的计算机上,用户可以在 Visual Studio .NET 2003 中创建一个项目,并在创建的项目中添加一个指向 MyComponent 版本 2.0 的引用(方法是浏览到文件名或使用 Add Reference [添加引用] 对话框中的 .NET 选项卡)。当再次打开项目时,Visual Studio .NET 2003 将 MyComponent 引用解析成组件的正确版本(版本 2.0)。
  • 在安装了 MyComponent 版本 1.0 的计算机上,用户可以在 Visual Studio .NET 2003 中创建一个项目,并可以在创建的项目中添加一个指向 MyComponent 版本 1.0 的引用。如果除了现有的版本 1.0 以外,用户还并行安装了 MyComponent 版本 2.0,那么当再次打开项目时,Visual Studio 将 MyComponent 引用解析成组件的正确版本(版本 1.0)。

    要将项目升级到 MyComponent 版本 2.0,用户需要删除对版本 1.0 的原始引用,并添加一个指向版本 2.0 的新引用。

组件安装

要支持多个版本,必须为 Visual Studio .NET 2003 正确注册组件。正确注册包括以下步骤:

  • 在用户硬盘上除全局程序集缓存 (GAC) 以外的位置安装组件。如果您希望该组件能够被多个应用程序共享,则还应在 GAC 中安装它。
  • 通过在某个以下项下创建相应的注册表项,在 AssemblyFolders 子项中注册组件的安装位置:
    • HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1\AssemblyFolders
    • HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\7.1\AssemblyFolders
    • HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\AssemblyFolders
    • HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders
      注意:仅在一个 AssemblyFolder 中注册组件的安装位置。

要注册组件,首先必须确定组件的访问级别,然后按照以下规则在相应的 AssemblyFolder 位置中注册组件:

  • 如果要为单个用户注册组件,并且仅为 Visual Studio .NET 2003 注册组件,则在 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1 中进行注册。
  • 如果要为一台计算机上的所有用户注册组件,并且仅为 Visual Studio .NET 2003 注册,则在 HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\7.1 中进行注册。
  • 如果要为单个用户注册组件,并且要为 Visual Studio 的所有版本注册,则在 HKEY_CURRENT_USER\Software\Microsoft\.NETFramework 中进行注册。
  • 如果将要为一台计算机上的所有用户注册组件,并且要为 Visual Studio 的所有版本注册,则在 HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework 中进行注册。
    注意:如果磁盘上的路径包含多个组件,则只需创建一个 AssemblyFolder 注册表项。此项将用于在对应的注册路径中查找所有组件。

组件发行原则

使用以下原则发行将要与早期版本并行安装在计算机上的新组件版本:

  • 在用户硬盘的另一个目录下安装组件的新版本。
    注意:将安装新组件的目录和全局程序集缓存 (GAC) 区分开来很重要。虽然您可能会选择在 GAC 中安装组件以便在运行时使用,但是您还必须将组件安装在用户硬盘的单独目录中以便在设计时使用。
  • 在指定的四个注册表项中的一个注册表项下为新组件创建一个新的注册表项。
  • 请勿从注册表中删除早期组件版本的注册表项。

使用以下原则发行替换早期版本的组件:

  • 组件的当前版本使用被替换的版本所使用的程序集名称和文件名。如果文件名发生更改,则引用组件早期版本的用户将不会自动引用新的版本。
  • 将组件的新版本安装在用户硬盘上被替换的版本的安装目录中。
    注意:将安装新组件的目录和全局程序集缓存 (GAC) 区分开来很重要。虽然您可能会选择在 GAC 中安装组件以便在运行时使用,但是您还必须将组件安装在用户硬盘的单独目录中以便在设计时使用。新旧组件可以并行安装在 GAC 中。这样,管理员就可以使用策略来控制运行时加载组件的哪个版本。
  • 在与旧版本相同的注册表项中注册组件的新版本。
注意:请勿将组件放在 %windir%\Microsoft.NET\Framework\v1.<x> 目录中,其中 <x> 是 .NET Framework 的版本。

Visual Studio .NET 2003 如何支持组件的多个版本

与早期版本不同,Visual Studio .NET 2003 自动保留 AssemblyFolder 名称,AssemblyFolder 中包含组件的引用信息和其他引用信息(如程序集名称)。这些注册表项作为 AssemblyKeyName 属性中项目文件的 <Reference> XML 元素的一部分被保留。此属性的值是一个取决于 AssemblyFolder 的注册表位置的字符串。Visual Studio 采用以下规则来确定属性的保留值:

  • HKEY_CURRENT_USER \SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\<keyname>

    项目文件中保留的字符串将是“hkcu\<keyname>”

  • HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\<keyname>

    项目文件中保留的字符串将是“hklm\<keyname>”

  • HKEY_CURRENT_USER \SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\<keyname>

    项目文件中保留的字符串将是“hkcu\dn\<keyname>”

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\<keyname>

    项目文件中保留的字符串将是“hklm\dn\<keyname>”

以下情况下将保留 AssemblyKeyName 属性:

  • 用户从 Add Reference(添加引用)对话框的 .NET 选项卡添加对程序集的引用。在这种情况下,Visual Studio .NET 2003 自动获知 AssemblyFolder 的名称和位置。
  • 用户浏览到磁盘上的一个程序集文件,且在一个或多个 AssemblyFolders 中注册了该文件的路径。在这种情况下,Visual Studio .NET 2003 按照组件安装中指定的顺序搜索计算机上所有 AssemblyFolders 的列表。第一个具有与文件路径相匹配的注册路径的 AssemblyFolder 被保留在 AssemblyKeyName 属性中。
    注意:如果用户浏览到 .NET Framework SDK 目录中的程序集,则不保留 AssemblyFolder 名称。.NET Framework SDK 目录受到特别对待,并且组件供应商不应该尝试在任何 AssemblyFolder 位置注册 .NET Framework SDK 目录。

限制

Visual Studio .NET 2003 中的多个组件版本支持具有以下限制:

  • 从 Visual Studio .NET 2002 升级的项目将不会保留包含组件引用信息的 AssemblyFolder 的名称。要保留此信息,用户需要在项目升级到 Visual Studio .NET 2003 后立即手动删除和读取受影响组件的引用。
  • 此功能不能用于支持在同一项目中引用同一组件的多个版本。
  • 此功能也不能用于支持引用 .NET Framework 的多个版本。

小结

本文说明了如何在 Visual Studio .NET 2003 中正确安装、注册和发行将与同一组件的早期版本并行安装的组件。使用这些信息,您可以在 Visual Studio .NET 中发行组件的更新版本,而不会对您的用户造成版本控制问题。
标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP