我们正在尝试将大量项目转换为使用SDK7.1。对于C ++项目来说,这看起来非常简单,你可以将项目设置中的“Platform Toolset”属性更改为“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文件和几乎ad-hoc,以及重新定义各种SDKPath属性的BeforeBuild等目标。这似乎迫使使用正确的工具。但是,如果感觉非常'hacky'。我们必须缺少设置,因为我们仍然会遇到一些错误。
或者,我们发现,我们可以在这里更改注册表值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\SDK40ToolsPath
指向正确的SDK。但是,必须修改环境以支持这一点是错误的。我们想要构建我们产品的旧版本,并且必须切换环境才能做到这一点很丑陋且容易出错。
有没有官方的方法呢?
感谢。
P.S。我发现这个问题http://social.msdn.microsoft.com/Forums/en-MY/windowssdk/thread/ebc8914f-d4b5-44e7-8c76-10332d155812,海报似乎在问类似的问题,但问题似乎没有得到解答。
答案 0 :(得分: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