如何:使用 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 之间是不同的。
此过程需要执行下列步骤:
生成应用程序清单和部署清单。
更改部署清单以列出多个 .NET Framework 版本。
更改 app.config 文件以列出兼容的 .NET Framework 运行时版本。
更改应用程序清单,将依赖程序集标记为 .NET Framework 程序集。
为应用程序清单签名。
更新部署清单并为其签名。
生成应用程序清单和部署清单
- 使用发布向导或项目设计器的“发布”页来发布应用程序,并生成应用程序清单文件和部署清单文件。 有关更多信息,请参见如何:使用发布向导发布 ClickOnce 应用程序或“项目设计器”->“发布”页。
更改部署清单以列出多个 .NET Framework 版本
在 publish 目录中,使用 Visual Studio 中的 XML 编辑器打开部署清单。 部署清单的文件扩展名为 .application。
将 <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 运行时版本
在解决方案资源管理器中,使用 Visual Studio 中的 XML 编辑器打开 App.config 文件。
将 <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 程序集
在 publish 目录中,使用 Visual Studio 中的 XML 编辑器打开应用程序清单。 部署清单的文件扩展名为 .manifest。
针对标记程序集(System.Core、WindowsBase、Sentinel.v3.5Client 和 System.Data.Entity),将 group="framework" 添加到依赖项 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>
对应用程序清单和部署清单进行更新和重新签名
- 对应用程序清单和部署清单进行更新和重新签名。 有关更多信息,请参见如何:为应用程序和部署清单重新签名。
请参见
参考
<compatibleFrameworks> 元素(ClickOnce 部署)
<dependency> 元素(ClickOnce 应用程序)