Dot-Net
如何強制應用程序使用 .NET 3.5 或更高版本?
我們的應用程序是用 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 4,則為****CLR 2,或
- 如果安裝了 .NET 3.5,則為CLR 2 ;如果未安裝 .NET 3.5,則為CLR 4
(請注意,元素文件的社區內容部分中沒有回答類似的問題)
形成問題使我得到了答案。如Element 文件中所述,
當支持多個版本的執行時,第一個元素應該指定最喜歡的執行時版本,最後一個元素應該指定最不喜歡的版本。
所以實現第二個選項(“CLR 4 if it is installed, and CLR 2 is CLR 4 is not installed”)的方法是顛倒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 將被載入,否則將載入早期版本。