2009-07-13 161 views
0

我目前正在開發一個MMC管理單元,但遇到了一個很大的障礙 - 它使用.Net 4.0框架完成;並且MMC正在加載以前版本的運行時。因爲整個項目都是爲4.0編寫的(到目前爲止,已有5000個LOC),因此使用老版本的運行庫並不是一個真正的選擇。這只是一個管理前端(幻想:P)。MMC .Net運行時版本

我檢查了MMC註冊表項,它的版本是v4.0.20506。我無法在任何地方找到任何其他MMC.Net互操作配置。

任何想法?

+0

我假設你正在使用Dev10來開發你的插件,對嗎? 你是否也在64位機器上運行? – mfawzymkh 2009-07-21 05:10:08

+0

@mfawzymkh是 - 那就是我坐的地方 – 2009-07-21 14:13:24

回答

3

已經對此事遠一點讀了,我可以證實,宿主進程必須明確通過some new APIs支持多個運行時在.NET 4.0中。

我懷疑MMC(即使在Windows 7中)支持這些API,因爲.NET 4.0也處於測試階段。在不太可能的機會,這樣做,你可以迫使它在你的配置中使用supportedRuntime元素來使用它:

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

如果做不到這一點,但是,我怕你的運氣了。那麼您唯一的選擇就是將您的項目更改爲目標.NET 2.0。

或者,您可以編寫一個非託管MMC管理單元,託管它自己的運行時並加載管理的管理單元。你需要那些.NET 4.0特性有多糟糕?

1

...或者你可以強制MMC使用V4.0具有以下環境變量:

set COMPLUS_Version=v4.0.30319 
1

微軟自登載此文關於MMC和CLR版本http://msdn.microsoft.com/en-us/library/windows/desktop/gg983006(v=vs.85).aspx 基本上,你創建一個神奇的環境變量將CLR啓動引導至特定於您的MMC管理單元的配置文件。我個人認爲,如果他們只是簡單地將MMC.EXE更改爲使用CLR 4,但由於某種原因,他們決定不去這個方向,我想這會讓每個人的生活更輕鬆。

相關問題