安装了最新版的Win7 sdk(v7.1)后,觉得6.0a和7.0a的sdk挺碍眼,就都删除了。问题就来了:vs2008和vs2005可以用sdk自带的工具选择sdk的版本,但对vs2010无效。用vs2010新建的2.0、3.0、3.5版本的托管代码编译时都遇到问题:
"Task could not find "sgen.exe" using the SdkToolsPath "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/bin/NETFX 4.0 Tools/" or the registry key
"HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v7.0A". Make sure the SdkToolsPath is set and the tool exists in the correct processor specific location under the SdkToolsPath and that the Microsoft Windows SDK is installed"
google一下,发现这篇文章
http://www.gotknowhow.com/articles/task-could-not-find-sgen-exe-using-the-sdktoolspath-for-v70a
但对我来说的确算不上很好的解决办法(老版本的文件夹都删除了)
猜想可能编译器环境的路径问题,打开TuneUp Registry Editor(指注册表编辑器,搜索regedit),搜索V7.0A,在以下位置找到问题点:
HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/MSBuild/ToolsVersions/4.0
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/ToolsVersions/4.0
把里面的相关键值的V7.0A替换成现在的SDK的版本(V7.1),再编译,通过.........
另外VC2010中的SDK的选择可以在工程中设置,Project->Property Pages->Configuration Properties->General->Platform Toolset 在下拉框中选择sdk的版本,路径也只能对单个工程设置了,感觉这样更好。