2011-01-10 91 views
3

我在C#.NET 2.0中構建了一個程序,該程序在框架3.0和3.5下也很好。.Net「任何框架」配置

但是,如果.NET Framework 4.0是唯一安裝的框架,它不起作用,它需要用戶安裝2.0。

我發現下面的配置在谷歌:

<startup> 
    <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/> 
</startup> 

添加這在app.config後,我的程序在.NET Framework 4.0中的工作沒有任何問題!

我搜索的是.NET的'任何框架'配置,如果安裝了.NET 2.0,或者在.NET 4.0中運行我的程序。

如何做到這一點?

+0

我不知道這是可能的,而不*兩個*不同的構建(一個.NET2,一個.NET4)。 .NET4使用與.NET2/3/3.5不同的運行時/內核(例如,它不僅僅是一個更新的.NET API的問題),所以除非有一些神奇的選項需要CLR2 *或* CLR4,這是我從未聽說過的......可能會有一些更惡魔般的方法,如使用代理可執行文件來加載最佳/唯一CLR,然後加載圖像。我不知道:-) – 2011-01-10 22:27:38

回答

2

找到它!

這裏是所有誰需要它的配置:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" /> 
    </startup> 
</configuration> 
+0

如果它仍然無法正常工作,請確保將AppName.exe捆綁在一起。配置您的應用程序(即使它在同一個文件夾中)時分發它。我認爲配置被嵌入在.exe中,但它沒有。 – blade 2015-08-20 14:11:50

0

您需要更改應用程序的最低要求。

去項目設置更改目標框架2.0和我的事情是玩一樣,甚至用戶在他們的系統

3

2.0或4.0 .Net框架這並不沒有配置設計工作。 .NET 4使用不同的運行時,並且在加載.NET 2程序集時,默認情況下它會將其加載到CLR的版本2中。您可以重新配置它以防止這種行爲,並將其加載到CLR的v4中 - 但這並不總是一個好主意。它會導致您編寫的代碼在不同於其設計和測試的框架上運行,這可能會造成問題。

在系統上安裝適當的要求通常更簡單,更好。安裝.NET 2非常簡單(並且在Vista +中默認出現)。這具有在您設計的框架上運行您的程序的優勢。

1

這是很難找到只有4.0安裝的機器。 .NET 2.0兼容版本預裝在Vista和Win7機器上,它們將順利運行您的程序。你必須有一臺從未安裝.NET的處女XP機器。也許是服務器核心。在這種情況下,通過安裝錯誤版本的.NET,有人犯了一個錯誤。

不知道這是怎麼回事,聞起來像是一個溝通問題。也許你不應該把它留給其他人來解決這個問題。當您的應用程序的系統要求包含對XP的支持時,您最好確保它可用。安裝項目非常簡單。

你的app.config是錯誤的,<requiredRuntime>自.NET 1.0以來已經過時。正確的咒語是<requestedRuntime>並要求2.0.50727和4.0