2

我们正在尝试将很多项目切换到使用 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海报似乎在问类似的事情,但是,问题似乎没有得到回答。

4

1 回答 1

1

以下两篇文章讨论了定义自定义工具集。可能是为 7.1 SDK 定义的需求之一,然后可以指导 MSBuild 使用它。

http://msdn.microsoft.com/en-us/library/bb383796(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/bb397428.aspx

于 2012-08-24T13:11:57.877 回答