.NET4.0下使用Net2.0類庫或程序集


最近在項目上一直使用.net4.0 framework,使用ffmepeg下的一個dll時,提示只能在2.0下運行,解決方法如下:

app.config中添加一個配置節:startup

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v2.0"/>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

 

在.NET2.0 framework,.NET3.5 framework的時候,由於程序運行環境本質還是.NET2.0,而到了.NET4.0由於整個程序集的版本更新,以前使用.NET2.0所編寫的程序集與.NET4.0的程序集互操作的時候就會出現兼容性問題。

通過MSDN,我們可以知道,startup配置節中的useLegacyV2RuntimeActivationPolicy屬性是在.NET4.0中新增的,默認是false,表示:使用默認的 .NET Framework 4 激活策略,該激活策略將加載 .NET Framework 4.0,通過使用公共語言運行時 (CLR) 版本 4.0 所創建的程序集,以及 CLR 早期版本通過使用受支持的低於版本 4.0 的最高 CLR 版本所創建的程序集。

現在如果當程序在.NET4.0環境下要使用.NET2.0或.NET3.5及以下的程序集時就必須將useLegacyV2RuntimeActivationPolicy設置為true,同時還要注意,需要在startup配置節的字節中添加supportedRuntime配置節,並指定為"v4.0",表示使用.NET4.0運行時來運行程序。

 

<supportedRuntime> 元素

指定應用程序支持的公共語言運行時版本。 此元素應由用 .NET Framework 1.1 版或更高版本生成的所有應用程序使用。

 


<supportedRuntime version="runtime version" sku="sku id"/>

 

特性

描述

version

可選特性。

一個字符串值,它指定此應用程序支持的公共語言運行時 (CLR) 版本。 有關 version 特性的有效值的信息,請參閱“運行時版本”值部分。

System_CAPS_note注意

                  通過 .NET Framework 3.5,“運行時版本”值的形式為主版本號.次版本號.內部版本號 從 .NET Framework 4 開始,僅主版本號和次版本號是必需的(即“v4.0”而不是“v4.0.30319”)。 建議使用較短字符串。

sku

可選特性。

一個字符串值,該值指定庫存單位 (SKU),庫存單位則指定此應用程序支持的 .NET Framework 版本。

從 .NET Framework 4.0 起,建議使用 sku 特性。  若存在該特性,則它指示應用面向的 .NET Framework 版本。

有關 SKU 特性的有效值的信息,請參閱 “SKU ID”值 部分。

 

如果應用程序配置文件中沒有 <supportedRuntime> 元素,則使用用於生成應用程序的運行時版本。

< supportedRuntime> 元素應由使用運行時 1.1 版或更高版本生成的所有應用程序使用。 僅為支持運行時 1.0 版而生成的應用程序必須使用 <requiredRuntime> 元素。

System_CAPS_note注意

如果使用 CorBindToRuntimeByCfg 函數來指定配置文件,則必須使用適用於所有運行時版本的 <requiredRuntime> 元素。 當你使用 CorBindToRuntimeByCfg 時,<supportedRuntime> 元素將被忽略。

對於支持從 .NET Framework 1.1 到 3.5 的運行時版本的應用,支持多個運行時版本時,第一個元素應指定優先級最高的版本,最后一個元素應指定優先級最低的版本。 對於支持 .NET Framework 4.0 或更高版本的應用,version 特性指示普遍適用於 .NET Framework 4 及更高版本的 CLR 版本,而 sku 特性指示應用所面向的單個 .NET Framework 版本。

System_CAPS_note注意

如果你的應用程序使用舊式激活路徑(如 CorBindToRuntimeEx 函數),並且你希望這些路徑激活 CLR 的版本 4(而不是較早的版本),或者你的應用程序是用 .NET Framework 4 生成的,但在使用較早版本的 .NET Framework 生成的混合模式程序集上有依賴項,則不足以在受支持的運行時列表中指定 .NET Framework 4。 此外,在配置文件的 <startup> 元素中,必須將 useLegacyV2RuntimeActivationPolicy 特性設置為 true 但是,將此特性設置為 true 意味着,用 .NET Framework 早期版本生成的所有組件都使用 .NET Framework 4(而不是生成它們時所用的運行時)運行。

建議使用應用程序可在其上運行的所有 .NET Framework 版本來測試這些應用程序。


下表列出了version特性的運行時版本值的有效值。

.NET Framework 版本

version 特性

1.0

"v1.0.3705"

1.1

"v1.1.4322"

2.0

"v2.0.50727"

3.0

"v2.0.50727"

3.5

"v2.0.50727"

4.0

"v4.0"

4.5

"v4.0"

4.5.1

"v4.0"

4.5.2

"v4.0"

4.6

"v4.0"

4.6.1

"v4.0"


下表列出 sku 特性支持的 .NET Framework 版本(自 .NET Framework 4 起)。  請注意,自 .NET Framework 4 開始的 sku 特性指示應用面向的 .NET Framework 版本。

.NET Framework 版本

sku 特性

4.0

".NETFramework,Version=v4.0"

4.0,客戶端配置文件

".NETFramework,Version=v4.0,Profile=Client"

4.0,平台更新 1

.NETFramework,Version=v4.0.1

4.0,客戶端配置文件,Update 1

.NETFramework,Version=v4.0.1,Profile=Client

4.0,平台更新 2

.NETFramework,Version=v4.0.2

4.0,客戶端配置文件,Update 2

.NETFramework,Version=v4.0.2,Profile=Client

4.0,平台更新 3

.NETFramework,Version=v4.0.3

4.0,客戶端配置文件,Update 3

.NETFramework,Version=v4.0.3,Profile=Client

4.5

".NETFramework,Version=v4.5"

4.5.1

".NETFramework,Version=v4.5"

4.5.2

".NETFramework,Version=v4.5"

4.6

".NETFramework,Version=v4.5"

4.6.1

".NETFramework,Version=v4.5"

下表顯示對於不同的 sku 特性值,當 version 特性為 v4.0 且 sku 特性標識 .NET Framework 4 或它的一個平台更新 (PU) 時,應用程序將在安裝的哪一個 .NET Framework 4 版本上運行。

sku 特性的值

4.0 Client

4.0 Full

4.0 Client + PU 1

4.0 Full + PU 1

4.0 Client + PU 2

4.0 Full + PU 2

4.0 Client + PU 3

4.0 Full + PU 3

4.5 和更高版本

.NETFramework,Version=v4.0,Profile=Client

.NETFramework,Version=v4.0

 

 

 

 

.NETFramework,Version=v4.0.1,Profile=Client

   

.NETFramework,Version=v4.0.1

     

 

 

.NETFramework,Version=v4.0.2,Profile=Client

       

.NETFramework,Version=v4.0.2

         

 

.NETFramework,Version=v4.0.3,Profile=Client

           

.NETFramework,Version=v4.0.3

             

示例

下面的示例演示如何在配置文件中指定支持的運行時版本。 配置文件指示應用面向 .NET Framework 4.6。

XML
 
<configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /> </startup> </configuration> 
 

此元素可用於應用程序配置文件中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM