[英]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或更高版本。
有沒有辦法告訴應用程序加載:
(請注意, 在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.