Pau*_*der 5 .net runtime .net-4.0
我们有一个支持.NET 2.0和.NET 4.0的应用程序,我们用几个框架相关的程序集切换<bindingRedirect />.我们已经使用该<supportedRuntime />元素允许应用程序使用最新的框架(如果可用)运行.但是,我们仍然需要完整的配置文件,而不仅仅是客户端配置文件.
.NET 3.5的文档表明您必须通过向元素添加属性来明确选择仅支持客户端.sku="client"<supportedRuntime />
sku属性名称区分大小写.如果缺少sku属性,或者其值设置为"client"以外的任何值,则运行时假定应用程序不是.NET Framework Client Profile应用程序.
但是,使用.NET 4.0缺少sku属性的详细文档.在我们的测试中,即使缺少sku属性,.NET运行时也将使用.NET 4.0客户端配置文件.这是一个问题,因为它不允许使用.config文件进行动态重定向.我试图sku="full"尝试强制它只使用完整的配置文件,但这只会导致不支持.NET 4.0运行时.
有没有人知道在使用<supportedRuntime />(或其他类似解决方案)来支持多个.NET框架版本时强制使用完整.NET配置文件的方法?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
<supportedRuntime version="v2.0.50727" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
appliesTo="v4.0.30319">
<dependentAssembly>
<assemblyIdentity name="Application"
publicKeyToken="798276055709c98a"
/>
<bindingRedirect oldVersion="4.1.2000.0"
newVersion="4.1.4000.0" />
<codeBase version="4.1.4000.0"
href="Redistributable\.NET 4.0\Application.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我的理解是这会起作用:
<supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0.1" />
<supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0" />
Run Code Online (Sandbox Code Playgroud)
没有 Profile=Full,但根据我的理解,Profile 旨在限制较小的 SKU。
已安装的 SKU 列表可在以下位置找到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs
Run Code Online (Sandbox Code Playgroud)