可以使用 ClickOnce 部署技术部署面向多个版本的 .NET Framework 的应用程序。 此任务要求生成和更新应用程序和部署清单。
注释
在将应用程序更改为面向 .NET Framework 的多个版本之前,应确保应用程序使用多个版本的 .NET Framework 运行。 .NET Framework 4 与 .NET Framework 2.0、.NET Framework 3.0 和 .NET Framework 3.5 之间的版本公共语言运行时不同。
此过程需要以下步骤:
生成应用程序和部署清单。
更改部署清单以列出多个 .NET Framework 版本。
更改 app.config 文件以列出兼容的 .NET Framework 运行时版本。
更改应用程序清单,将依赖程序集标记为 .NET Framework 程序集。
对应用程序清单进行签名。
更新并签署部署清单。
生成应用程序和部署清单
- 使用项目设计器的“发布向导”或“发布”页发布应用程序并生成应用程序和部署清单文件。 有关详细信息,请参阅 如何:使用发布向导发布 ClickOnce 应用程序 或 指定 ClickOnce 发布属性。
注释
在 ClickOnce for .NET Core 3.1 和 .NET 5 或更高版本中,可以使用发布工具而不是发布向导和项目设计器的“发布”页来设置部署属性。 有关更多信息,请参阅 使用 ClickOnce 部署 .NET Windows 应用程序 和 .NET 的 ClickOnce。
更改部署清单以列出多个 .NET Framework 版本
在发布目录中,使用 Visual Studio 中的 XML 编辑器打开部署清单。 部署清单具有 .application 文件扩展名。
将元素之间的
<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 运行时版本
在解决方案资源管理器中,使用 Visual Studio 中的 XML 编辑器打开 app.config 文件。
在
<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 程序集
在发布目录中,使用 Visual Studio 中的 XML 编辑器打开应用程序清单。 部署清单具有 .manifest 文件扩展名。
将
group="framework"
添加到 sentinel 程序集 (System.Core
、WindowsBase
、Sentinel.v3.5Client
和System.Data.Entity
) 的依赖项 XML 中。 XML 应类似于以下示例:<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true" group="framework">
将 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>
更新并重新对应用程序和部署文档进行签名
- 更新并重新对应用程序和部署清单进行签名。 有关详细信息,请参阅 如何:重新对应用程序和部署清单进行签名。