2011-08-15 26 views
1

我有一個問題真的很想知道。爲什麼具有CRT版本30729.4148的嵌入清單的程序在運行時在winsxs文件夾中以30729.6161(最新版本)運行?

我在我的機器上安裝了各種版本的visual studio 2008再分發軟件包。 現在,30729.6161是最新的。

在這個環境中,我製作了一個簡單的帶有嵌入式清單的程序,它只引用30729.4148 CRT運行時庫。

但是,當我運行該程序時,它沒有加載30729.4148版本的CRT庫,而是30729.6161。

爲什麼這樣嗎?

+1

看一看的Windows並排側組裝件http://en.wikipedia.org/wiki/Side-by-side_assembly – RedX

回答

4

新運行時帶有策略文件,可將客戶端與舊版本重定向到新版本。

參見:

%WinDir%\WinSxS\Policies 
+0

謝謝您的回答維基文章。我嘗試製作一個應用程序配置文件,例如MyApp.exe.config,並設置一個重定向元素,通知應用程序使用30729.4148 CRT庫來管理所有30729.x版本。在運行時,但是,我的應用程序仍然加載最新的CRT庫30729.6161。我的解決方案錯了? –

+0

嗯,這是政策文件重定向到新版本的任務。爲什麼OS要爲應用程序加載舊文件? – harper

+0

我真的不知道我的應用程序可以使用清單加載特定版本的dll。 –

相關問題