我们正在尝试将很多项目切换到使用 SDK7.1。对于 C++ 项目,这似乎很简单,您可以将项目设置中的“平台工具集”属性更改为“Windows7.1SDK”,一切都很好。
但是,对于 C# 项目(如果您将构建输出设置为诊断模式),我们可以看到各种工具(例如 sgen、resgen、LC)在以前的 SDK 7.0A 目录中运行。或者,在我们安装了 Vistual Studio 2012 的某些机器上,其中一些工具来自 v8.0A SDK 文件夹。
工具与其生成的程序集之间的不匹配似乎会导致各种错误,例如:
LC : error LC0000: 'Could not load file or assembly
'S:\Libraries\Bin\Release\Some.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.'
似乎我们可以编辑 .csproj 文件和几乎临时的,以及重新定义各种 SDKPath 属性的 BeforeBuild 等目标。这似乎迫使使用正确的工具。但是,如果感觉非常“hacky”。而且我们一定是错过了一些设置,因为我们仍然会遇到一些错误。
或者,我们发现,我们可以在这里更改注册表值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\SDK40ToolsPath
指向正确的 SDK。但是,必须修改环境来支持这一点感觉是错误的。我们想要构建我们产品的旧版本,并且必须切换环境来做到这一点是丑陋且容易出错的。
有没有官方的方法可以做到这一点?
谢谢。
PS我发现了这个问题http://social.msdn.microsoft.com/Forums/en-MY/windowssdk/thread/ebc8914f-d4b5-44e7-8c76-10332d155812海报似乎在问类似的事情,但是,问题似乎没有得到回答。