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

时间:2011-07-18 21:04:20

标签: .net .net-4.0 runtime

我们有一个支持.NET 2.0和.NET 4.0的应用程序,我们使用<bindingRedirect />切换一些与框架相关的程序集。我们使用<supportedRuntime />元素允许应用程序使用最新的框架(如果可用)运行。但是,我们仍然需要完整配置文件,而不仅仅是客户端配置文件。

documentation for .NET 3.5表示您必须通过向sku="client"元素添加<supportedRuntime />属性明确选择加入仅限客户端支持。

  

sku属性名称区分大小写。如果sku属性是   丢失,或者如果将其值设置为“client”以外的任何值,则   运行时假定应用程序不是.NET Framework客户端配置文件   应用

但是,使用.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>

2 个答案:

答案 0 :(得分:4)

我的理解是这会起作用:

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

没有Profile = Full,但是根据我的理解,配置文件意味着限制为较小的SKU。

可以在

找到已安装的SKU列表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs

答案 1 :(得分:0)

根据更新的.NET 4.5&amp; 4.6 <supportedRuntime> Element的MSDN页面,sku属性有一个“配置文件”选项,虽然它的唯一值是“客户端”,但它似乎并不意味着“完全” - 仅(根据该页面上的sku图表)。所以你应该对以下内容表示满意:

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
    <supportedRuntime version="v2.0.50727" />
</startup>

请注意,根据该链接的MSDN页面:

  

从.NET Framework 4开始,只需要主要版本号和次要版本号(即“v4.0”而不是“v4.0.30319”)。建议使用较短的字符串。

相关问题