尝试在 Visual Studio 2008 Professional Edition 中构建项目时出现以下错误:
任务失败,因为未找到“sgen.exe”,或者未安装正确的 Microsoft Windows SDK。该任务正在注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows 6.0A 的 InstallationFolder 值中指定的位置下的“bin”子目录中查找“sgen.exe”。您可以通过执行以下操作之一来解决问题:
- 安装适用于 Windows Server 2008 和 .NET Framework 3.5 的 Microsoft Windows SDK。
- 安装 Visual Studio 2008。
- 手动将上述注册表项设置到正确的位置。
- 将正确的位置传递到任务的“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 的重新格式化的计算机上进行编译。
复制 /y “C:\Program Files\Microsoft Visual Studio 8\SDK 2.0\Bin\sgen.exe” “C:\WINDOWS\Microsoft.NET\Framework 3.5\”
参见解释这里:
这对我在 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 最小安装的有用屏幕截图。
在 Visual Studio 中打开项目设置属性,然后选择左侧的“构建”选项卡。从配置下拉列表中选择所有配置。然后转到面板的末尾处,从生成序列化程序集下拉列表中选择“关闭”。
在 Win Server 2008 和 VS 2008 的全新安装上,以及最初在 VS2003 中创建的带有 Web 参考的项目,页面上的评论 Todd Price linked to 对我有用。在项目属性中的构建下,将配置更改为“所有配置”并将“生成序列化程序集”更改为关闭。
在很多情况下,您会发现 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\”位置即可。
这对我来说非常有用! 希望这有帮助
这个问题相当“老旧”,但它似乎仍然潜伏在 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 中,正如本文中指出的那样。
虽然这让我继续前进,但我仍然认为幕后一定有什么东西,导致寻找错误的地方。