如何:使用 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. 更新部署清单并为其签名。

生成应用程序清单和部署清单

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

  1. 在 publish 目录中,使用 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 Client

    <framework targetVersion="4.0" profile="Client" supportedRuntime="4.0.30319" />

    4 Full

    <framework targetVersion="4.0" profile="Full" supportedRuntime="4.0.30319" />

    3.5 Client

    <framework targetVersion="3.5" profile="Client" supportedRuntime="2.0.50727" />

    3.5 Full

    <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 运行时的 XML。

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

    .NET Framework 运行时版本

    XML

    4 Client

    <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />

    4 Full

    <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0" />

    3.5 Full

    <supportedRuntime version="v2.0.50727"/>

    3.5 Client

    <supportedRuntime version="v2.0.50727" sku="Client"/>

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

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

  2. 针对标记程序集(System.Core、WindowsBase、Sentinel.v3.5Client 和 System.Data.Entity),将 group="framework" 添加到依赖项 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>
    

对应用程序清单和部署清单进行更新和重新签名

请参见

参考

<compatibleFrameworks> 元素(ClickOnce 部署)

<dependency> 元素(ClickOnce 应用程序)

ClickOnce 部署清单

概念

发布 ClickOnce 应用程序

其他资源

.NET Framework 的配置文件架构