使用 ClickOnce 部署可在 .NET Framework 的多个版本上运行的应用程序

可以使用 ClickOnce 部署技术部署面向多个版本的 .NET Framework 的应用程序。 此任务要求生成和更新应用程序和部署清单。

注释

在将应用程序更改为面向 .NET Framework 的多个版本之前,应确保应用程序使用多个版本的 .NET Framework 运行。 .NET Framework 4 与 .NET Framework 2.0、.NET Framework 3.0 和 .NET Framework 3.5 之间的版本公共语言运行时不同。

此过程需要以下步骤:

  1. 生成应用程序和部署清单。

  2. 更改部署清单以列出多个 .NET Framework 版本。

  3. 更改 app.config 文件以列出兼容的 .NET Framework 运行时版本。

  4. 更改应用程序清单,将依赖程序集标记为 .NET Framework 程序集。

  5. 对应用程序清单进行签名。

  6. 更新并签署部署清单。

生成应用程序和部署清单

注释

在 ClickOnce for .NET Core 3.1 和 .NET 5 或更高版本中,可以使用发布工具而不是发布向导和项目设计器的“发布”页来设置部署属性。 有关更多信息,请参阅 使用 ClickOnce 部署 .NET Windows 应用程序.NET 的 ClickOnce

更改部署清单以列出多个 .NET Framework 版本

  1. 在发布目录中,使用 Visual Studio 中的 XML 编辑器打开部署清单。 部署清单具有 .application 文件扩展名。

  2. 将元素之间的 <compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2"></compatibleFrameworks> XML 代码替换为列出应用程序支持的 .NET Framework 版本的 XML。

    下表显示了一些可用的 .NET Framework 版本和可添加到部署清单的相应 XML。

    .NET Framework 版本 XML
    4 客户端 <framework targetVersion=“4.0” profile=“Client” supportedRuntime=“4.0.30319” />
    4 满员 <framework targetVersion=“4.0” profile=“Full” supportedRuntime=“4.0.30319” />
    3.5 客户端 <framework targetVersion=“3.5” profile=“Client” supportedRuntime=“2.0.50727” />
    3.5 完整 <framework targetVersion=“3.5” profile=“Full” supportedRuntime=“2.0.50727” />
    3.0 <framework targetVersion=“3.0” supportedRuntime=“2.0.50727” />

更改 app.config 文件以列出兼容的 .NET Framework 运行时版本

  1. 在解决方案资源管理器中,使用 Visual Studio 中的 XML 编辑器打开 app.config 文件。

  2. <startup></startup> 元素之间替换(或添加)XML 代码,以列出应用程序支持的 .NET Framework 运行时。

    下表显示了一些可用的 .NET Framework 版本和可添加到部署清单的相应 XML。

    .NET Framework 运行时版本 XML
    4 客户端 <supportedRuntime version="v4.0.30319" sku=".NETFramework, Version=v4.0, Profile=Client" />
    4 完整 <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0" />
    3.5 完整 <supportedRuntime version=“v2.0.50727”/>
    3.5 客户端 <supportedRuntime version=“v2.0.50727” sku=“Client”/>

更改应用程序清单以将依赖程序集标记为 .NET Framework 程序集

  1. 在发布目录中,使用 Visual Studio 中的 XML 编辑器打开应用程序清单。 部署清单具有 .manifest 文件扩展名。

  2. group="framework" 添加到 sentinel 程序集 (System.CoreWindowsBaseSentinel.v3.5ClientSystem.Data.Entity) 的依赖项 XML 中。 XML 应类似于以下示例:

    <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true" group="framework">
    
  3. 将 Microsoft.Windows.CommonLanguageRuntime 元素的 <assemblyIdentity> 版本号更新为 .NET Framework 的版本号,该版本号是兼容性最低标准。 例如,如果应用程序面向 .NET Framework 3.5 和 .NET Framework 4,请使用 2.0.50727.0 版本号,XML 应如下所示:

    <dependency>
      <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
        <assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="2.0.50727.0" />
      </dependentAssembly>
    </dependency>
    

更新并重新对应用程序和部署文档进行签名

  • 更新并重新对应用程序和部署清单进行签名。 有关详细信息,请参阅 如何:重新对应用程序和部署清单进行签名。