我们正在尝试将许多项目转换为使用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:LibrariesBinReleaseSome.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.'
我们似乎可以编辑.csproj文件和几乎是特别的,以及BeforeBuild等重新定义各种SDKPath属性的目标。这似乎迫使人们使用正确的工具。但是,如果感觉很"暴躁"。我们一定是错过了设置,因为我们仍然会遇到一些错误。
或者,我们发现,我们可以在这里更改注册表值:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSBuildToolsVersions4.0SDK40ToolsPath
指向正确的SDK。但是,必须修改环境来支持这一点,感觉是错误的。我们想要构建我们产品的旧版本,而必须切换环境来实现这一点是丑陋且容易出错的。
有什么官方的方法可以做到这一点吗?
谢谢。
附言:我发现了这个问题http://social.msdn.microsoft.com/Forums/en-MY/windowssdk/thread/ebc8914f-d4b5-44e7-8c76-10332d155812海报似乎在问类似的问题,但这个问题似乎没有得到回答。
以下两篇文章讨论定义自定义工具集。也许其中一个需求是为7.1 SDK定义的,然后MSBuild可以被引导使用它
http://msdn.microsoft.com/en-us/library/bb383796(v=vs.110).aspxhttp://msdn.microsoft.com/en-us/library/bb397428.aspx