2011-08-15 19 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。 –

相关问题