2012-10-24 138 views
3

我注意到,我可以運行一些.NET應用程序與.NET 3.5編譯而沒有在只有.NET 4.0安裝的計算機上的更改。 然而,它並不總是這樣:如果我在使用System.Core引用的應用程序中使用某些dll,那麼應用程序將無法啓動,因爲它找不到System.Core,我必須將以下內容添加到Name中。 exe.config:NET 4.0上的.NET 3.5的dll

<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" /> 
    </startup> 
</configuration> 

爲什麼我只需要,如果我使用System.Core程序來使用這個?我知道System.Core是在.NET 3.5中添加的,但它對.NET 4.0有什麼不同?其他的參考文獻甚至比.NET 1.1或2.0更老,所以他們爲什麼不給出問題?

+0

不,還有其他事情正在進行。你確定這不是一臺擁有.NET 4.5的機器嗎?擴展方法存在問題。 –

+0

有用的問題;我看到你還有一些沒有答案的有用問題,並給他們一個贊成,讓他們多一點焦點。 – Tom

回答

1

我認爲原因是在.NET 4中System.Func<TResult>已經從System.Core.dll移動到mscorlib.dll。所以,即使你可以編譯該項目,它可能無法運行,因爲它無法在mscorlib.dll中找到該方法。

您可以通過更新您的項目文件來解決這個問題,以像下面的.NET 3.5中引用System.Core.dll。

<Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 
+0

即使你沒有在這些dll中使用System.Func ,這會是一個問題嗎? – user968698