簡體   English   中英

如何強制應用程序使用.NET 3.5或更高版本?

[英]How to force an application to use .NET 3.5 or above?

我們的應用程序是使用VS 2008構建的,使用Linq並將Target Framework設置為.NET Framework3.5。

當只在機器上安裝.NET 3.5或4時,它可以正常工作。

但是,在安裝了.NET 2(或3.0)和.NET 4的計算機上,應用程序加載了.NET 2,並在訪問Linq時崩潰,因為它查找.NET 3.5庫。

在app.config中使用標簽似乎沒有幫助,因為它指定了CLR版本,在.NET 3.5的情況下為2。

請注意,我們的安裝會驗證是否已安裝.NET 3.5或更高版本。

有沒有辦法告訴應用程序加載:

  • 它找到的最高CLR ,或
  • CLR 4(如果已安裝)和CLR 2(如果未安裝CLR 4)或
  • 如果安裝了.NET 3.5,則為CLR 2;如果未安裝.NET 3.5,則為CLR 4

(請注意, 在Element文檔的Community Content部分中仍未回答類似的問題)

形成這個問題讓我得到答案。 元素文檔中所述

當支持多個版本的運行時時,第一個元素應指定最優選的運行時版本,最后一個元素應指定最不喜歡的版本。

因此,實現第二個選項(“如果安裝了CLR 4,CLR 2未安裝CLR 4”)的方法是顛倒app.config中元素的順序:

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

這樣,如果安裝了.NET 4,它將被加載,否則將加載早期版本。

另一個有用的鏈接是MSDN上的這個頁面 如果您只想定位客戶端配置文件或需要完整配置文件,則會顯示app.config中所需的所有值。

.NET Framework 3.0和3.5版使用CLR的2.0.50727版。

如果您有一個非托管EXE調用.NET DLL,您還需要創建一個foo.exe.config文件,其中包含上面的<startup>...塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM