|
17
|
| Craig Shearer · 技术社区 · 16 年前 |
|
|
1
18
我已经通过手动配置ToolPath来解决这个问题,使其指向sgen.exe的旧版本(版本2.0.50727.3038)
我将刀轨属性更改为:
默认情况下,它运行的是新的4.0框架版本:C:\Program Files(x86)\Microsoft SDK\Windows\v7.0A\Bin\NETFX 4.0 Tools
|
|
|
2
17
MSBuild使用注册表获取v3.5工具的路径。如果无法识别3.5工具的路径,则需要v3.5 SDK工具的MSBuild任务将退回到v4.0路径-如果您确实感兴趣,请查看用于在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.NETFramework.props中设置TargetFrameworkSDK工具目录属性的逻辑。 您可以按以下方式诊断和修复此问题: 安装 Process Monitor 并设置筛选器以监视msbuild对注册表的访问(事件类:registry,进程名:msbuild.exe,所有类型的结果)。 运行你的构建。 在进程监视器中搜索与“MSBuild\ToolsVersions\4.0\SDK35ToolsPath”匹配的RegQueryValue访问。请注意,这可能位于“HKEY\ U LOCAL\ U MACHINE\SOFTWARE\Microsoft”或“HKEY\ U LOCAL\ U MACHINE\SOFTWARE\Wow6432Node\Microsoft”下。 如果您查看注册表中的这个键,就会发现它与另一个注册表值有别名,例如“$(Registry:HKEY_LOCAL_MACHINE\软件\Microsoft\Microsoft SDK\Windows\v7.1\WinSDK-NetFx35Tools-x86@InstallationFolder)" 应该清楚你需要纠正什么。我选择导出不正确的密钥,编辑.reg文件并运行它来创建正确的密钥。
|
|
|
3
7
我发现这是最简单的方法,它适用于:<生成序列化程序集>打开</生成序列化程序集>
|
|
4
7
问题是
|
|
|
5
5
@克雷格-你是否在你的构建机器上手动安装了7.0A框架。如果是这样,您的问题可能是注册表设置,而不是msbuild。查看LocalMachine->软件->微软->MSBuild->工具版本->4.0->SDK35ToolsPath并确保引用的注册表项有效(提示:确保只有在-x86键存在时-x86才存在。) |