需要带有<supportedRuntime />的.NET 4.0完整配置文件

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配置文件的方法?

我们的.config文件中的代码段

<?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)

Gre*_*mer 4

我的理解是这会起作用:

<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)