【问题标题】:SGEN doesn't work after upgrading from VS2012 to VS2013从VS2012升级到VS2013后SGEN不工作
【发布时间】:2013-12-28 03:29:27
【问题描述】:

当我在 VS2013(版本 12.0.21005.1 REL)下编译我的 c# 解决方案时,它无法构建部分项目并显示错误消息:

错误 32 命令““C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bin\NETFX 4.0 Tools\sgen.exe” /a:"Project.dll" /f /v" 以代码 3 退出。项目

构建后事件:“$(FrameworkSDKDir)\Bin\NETFX 4.0 Tools\sgen.exe” /a:"$(TargetPath)" /f /v

确实,文件夹“C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bin\NETFX 4.0 Tools”不存在:“\Bin”仅包含文件夹“NETFX 4.5.1 Tools” .

项目的目标框架:“.NET Framework 4”。

【问题讨论】:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools 注册表项,我想。 非常不健康,听起来您安装了预览版但未正确卸载。
  • 它没有解决我的问题:错误 64 命令“”C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\\Bin\NETFX 4.0 Tools\sgen.exe ” /a:"project.dll" /f" 以代码 3 退出。项目
  • 你的机器搞砸了,因此在注册表中搜索“netfx 4.0 工具”是有意义的。
  • 如果删除/安装 VS2013 可以解决问题?

标签: c# visual-studio-2013 sgen


【解决方案1】:

我今天遇到了这个错误。我正在做的项目目前正在VS2012中维护。在我的新安装中,我有 VS2013(首先安装)和 VS2012。我在 VS2013 中遇到了这个错误。

问题是运行 sgen.exe 的文件夹在我的机器上不存在。在我的机器上,我有 $(FrameworkSDKDir)\Bin\NETFX 4.5.1 Tools\ 但没有 $(FrameworkSDKDir)\Bin\NETFX 4.0 Tools\ 文件夹。

为了解决这个问题,我在父源代码管理控制器中创建了一个 NETFX 4.0 Tools\ 并将其签入。这样,引用不再依赖于每个用户的机器。我的帖子构建现在是"$SolutionDir\..\..\NETFX 4.0 Tools\sgen.exe" /force "$(TargetPath)"

【讨论】:

  • 好的,我了解解决方法。但是我想知道VS2013是否有bug,可能是微软发布或即将发布补丁?
  • 我不确定这是一个错误。问题似乎是我们的解决方案依赖于解决方案目录之外的特定文件夹名称。源代码控制之外的任何依赖都将面临至少有些脆弱的风险。我希望从 MS 得到的最好的改变是“构建后,生成 XML 序列化程序集”的构建属性复选框
  • 如果您对 VS2013 中的问题的研究很重要,我在 Premium v​​12.0.21005.1 REL 中体验过
【解决方案2】:

解决方案(由 Microsoft 提供):

最佳做法是使用 $(SDK40ToolsPath) 属性来获取 .NET SDK 二进制文件路径,而不是使用 $(FrameworkSDKDir) 属性。使用 “$(SDK40ToolsPath)sgen.exe” 应该 在 Visual Studio 2013 及更早版本中工作。

$(FrameworkSDKDir) value in VS macros (post build event) references invalid path

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 2015-05-26
    • 2013-09-17
    • 2018-08-31
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多