任务失败,因为找不到"sgen.exe"。

6
在使用Visual Studio 2008专业版构建项目时,出现了以下错误:
“sgen.exe”未找到或未安装正确的Microsoft Windows SDK。该任务正在寻找“sgen.exe”,它位于注册表键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A的InstallationFolder值指定的位置下的“bin”子目录中。您可以通过执行以下操作之一来解决此问题: 1. 安装Microsoft Windows SDK for Windows Server 2008和.NET Framework 3.5。 2. 安装Visual Studio 2008。 3. 手动设置上述注册表键的正确位置。 4. 将正确的位置传递到任务的“ToolPath”参数中。
我尝试下载Microsoft Windows SDK for Windows Server 2008和.NET Framework 3.5,但仍然出现了错误。我还尝试下载Windows 7 SDK和.NET Framework 3.5,但结果仍然相同。
我还尝试手动编辑注册表以更改InstallationFolder,以及尝试修复Visual Studio的安装。
该项目最初是在Windows XP上创建的,现在我正在运行Windows 7企业版的重新格式化机器上编译。
7个回答

8

复制 /y “C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sgen.exe” “C:\WINDOWS\Microsoft.NET\Framework\v3.5\”

可以在这里查看解释


3

3
在Visual Studio中,打开项目设置属性,然后在左侧选择“生成”选项卡。从“配置”下拉列表中选择“All Configurations”。然后向下滚动到面板末尾,从“生成序列化程序集”下拉列表中选择“Off”。 http://support.microsoft.com/kb/955715

1

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

我在这里这里找到了一篇博客文章。


0
在许多情况下,您会发现C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\是空的。在这种情况下,您必须安装Visual Studio或SDK 2.0。
与上述耗时的过程不同,您可以从this链接下载sgen.exe,并将其粘贴到“C:\WINDOWS\Microsoft.NET\Framework\v3.5\”位置。
这对我非常有效!希望这可以帮助到您。

0
在Win Server 2008和全新安装的VS 2008上,如果一个项目最初是在VS2003中创建的,并且包含了Web引用,那么页面上的Todd Price 链接对我很有帮助。在项目属性中,在“生成”下,将配置更改为“所有配置”,并将“生成序列化程序集”更改为关闭状态。

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\v10.0A\bin,我发现它包含两个子目录,即NETFX 4.8 Tools和NETFX 4.8.1 Tools,这两个目录中都包含了sgen.exe的副本。除此之外,C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin是空的。
在寻找可能的原因和解决方法时,我也看到了这篇帖子以及https://learn.microsoft.com/en-us/dotnet/standard/serialization/xml-serializer-generator-tool-sgen-exe
那里给出的建议并没有对我有所帮助。
最后,我只是简单地将sgen.exe复制到了C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin的位置,正如这篇帖子中指出的那样。
虽然这让我继续前进,但我仍然认为背后一定有一些东西,导致我们在错误的地方寻找。

这个问题让我完全感到不满意,因为当事情需要临时解决方案才能正常工作时,我感到非常不安全。在尝试这个和那个,并且搜索了 Visual Studio 和谷歌提供的资源之后,我找到了一个名为 "https://dev59.com/enVD5IYBdhLWcg3wWaRh" 的链接,它解决了另一个与 sgen.exe 相关的问题,但是它让我用文本编辑器查看了项目文件。最后,问题的根源出现了,因为项目部分的最后条目调用了带有绝对路径的 sgen.exe。将其更正为真实位置的 sgen.exe 终于解决了这个问题。 - MulMic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接