任务失败,因为找不到“sgen.exe”

问题描述 投票:0回答:7

尝试在 Visual Studio 2008 Professional Edition 中构建项目时出现以下错误:

任务失败,因为未找到“sgen.exe”,或者未安装正确的 Microsoft Windows SDK。该任务正在注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows 6.0A 的 InstallationFolder 值中指定的位置下的“bin”子目录中查找“sgen.exe”。您可以通过执行以下操作之一来解决问题:

  1. 安装适用于 Windows Server 2008 和 .NET Framework 3.5 的 Microsoft Windows SDK。
  2. 安装 Visual Studio 2008。
  3. 手动将上述注册表项设置到正确的位置。
  4. 将正确的位置传递到任务的“ToolPath”参数中。

我尝试下载适用于 Windows Server 2008 和 .NET Framework 3.5 的 Microsoft Windows SDK,但仍然出现错误。我还尝试下载 Windows 7 SDK 和 .NET Framework 3.5,结果仍然相同。

我还尝试手动编辑注册表以更改 InstallationFolder,并尝试修复 Visual Studio 安装。

该项目最初是在 Windows XP 上创建的,我尝试在运行 Windows 7 Enterprise 的重新格式化的计算机上进行编译。

visual-studio-2008 windows-7
7个回答
8
投票

复制 /y “C:\Program Files\Microsoft Visual Studio 8\SDK 2.0\Bin\sgen.exe” “C:\WINDOWS\Microsoft.NET\Framework 3.5\”

参见解释这里


3
投票

这对我在 Win 7 / VS.NET 2008 上有用:

解决方案是:下载Windows SDK并安装.Net开发工具(上面写着2008 Server,但我是在XP SP3上这样做的): http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc

here 找到了它,这篇文章包含修复此问题所需的 SDK 最小安装的有用屏幕截图。


3
投票

在 Visual Studio 中打开项目设置属性,然后选择左侧的“构建”选项卡。从配置下拉列表中选择所有配置。然后转到面板的末尾处,从生成序列化程序集下拉列表中选择“关闭”。

http://support.microsoft.com/kb/955715


1
投票

该问题似乎是由 Visual Studio 2008 使用 Web 引用时引起的。我最终删除了 Web 引用并仅使用了服务引用。

我在这里这里找到了一篇关于此内容的博客文章。


0
投票

在 Win Server 2008 和 VS 2008 的全新安装上,以及最初在 VS2003 中创建的带有 Web 参考的项目,页面上的评论 Todd Price linked to 对我有用。在项目属性中的构建下,将配置更改为“所有配置”并将“生成序列化程序集”更改为关闭。


0
投票

在很多情况下,您会发现 C:\Program Files\Microsoft Visual Studio 8\SDK 2.0\Bin\ 是空的。 在这种情况下,您必须安装 Visual Studio 或 SDK 2.0

完成上述耗时过程后,您只需从this链接下载sgen.exe并将其粘贴到“C:\WINDOWS\Microsoft.NET\Framework 3.5\”位置即可。

这对我来说非常有用! 希望这有帮助


0
投票

这个问题相当“老旧”,但它似乎仍然潜伏在 Microsoft Visual Studio / .net SDK 的内部工作中

我刚刚安装了 Visual Studio 2020、Windows SDK 和 .net SDK。为了尝试一下并看看一切是否按预期工作,我选择了 KeePass2(一个密码存储应用程序)的来源。

当尝试编译它时,它会向我抛出一个错误:

1>------ Erstellen gestartet: Projekt: KeePass, Konfiguration: Debug|AnyCPU ------ 1>C:\Users\First Last\Downloads\KeePass-2.54-Source\KeePassLib\Utility\XmlUtilEx.cs(62,4,62,19): warning CS0618: "XmlReaderSettings.ProhibitDtd" ist veraltet: "Use XmlReaderSettings.DtdProcessing property instead." 1>  KeePass -> C:\Users\First Last\Downloads\KeePass-2.54-Source\Build\KeePass\Debug\KeePass.exe 1>  Der Befehl ""C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\sgen.exe"" ist entweder falsch geschrieben oder 1>  konnte nicht gefunden werden.
========== Erstellen: 0 erfolgreich, 1 Fehler, 0 aktuell, 0 übersprungen ========== Erstellen fehlgeschlagen.

检查C:\Program Files (x86)\Microsoft SDKs\Windows 10.0A,发现它包含两个子目录,即NETFX 4.8 Tools和NETFX 4.8.1 Tools,这两个子目录又包含sgen.exe的副本。否则 C:\Program Files (x86)\Microsoft SDKs\Windows 10.0A 中为空。

在研究可能的原因和补救措施时,我遇到了这篇文章以及https://learn.microsoft.com/en-us/dotnet/standard/serialization/xml-serializer-generator-tool-sgen-exe

“提示:”下给出的建议对我没有任何帮助。

我最终所做的只是将 sgen.exe 复制到位置 C:\Program Files (x86)\Microsoft SDKs\Windows 10.0A 中,正如本文中指出的那样。

虽然这让我继续前进,但我仍然认为幕后一定有什么东西,导致寻找错误的地方。

© www.soinside.com 2019 - 2024. All rights reserved.