MSB6003无法运行指定的任务可执行文件"sgen.exe".文件名或扩展名太长

Dam*_*r_K 5 c# msbuild visual-studio-2017

在Windows 10上运行VS 2017 15.5.3.

获取此通用错误"指定的任务可执行文件"sgen.exe"无法运行.文件名或扩展名太长"在Release配置和X64平台中构建项目时.但它在Debug配置和Any CPU平台上构建良好.

https://developercommunity.visualstudio.com/content/problem/98090/vs-2017-153-error-the-specified-task-executable-sg.html中所述

能够构建它但是在将"生成序列化组件"设置为OFF之后.

不要认为文件名很长.有人会对此有所了解吗?

最好的祝福,

Damodar

Leo*_*SFT 12

MSB6003无法运行指定的任务可执行文件"sgen.exe".文件名或扩展名太长

我们知道,sgen.exe用于为指定程序集中的类型创建XML序列化程序集,以便在序列化或反序列化指定类型的对象时提高XmlSerializer的启动性能.

如果您不需要XML序列化程序集,则应将属性设置GenerateSerializationAssembliesAutooff.默认情况下,SGen仅针对"任何CPU"生成代理类型.这就是为什么你在Release配置和X64平台上得到错误而在Debug配置和Any CPU平台上没有错误的原因.您可以右键单击项目 - > Properties-> Build-> GenerateSerializationAssemblies,将值设置为off.然后卸载项目,编辑项目,在项目文件中,您可以找到以下代码行:

<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,这一行代码存在于条件中 Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ",因此要解决此问题,您可以手动将此行代码添加到其他条件.您的项目文件配置最终会看起来像这样:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
   ...
    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
    ...
    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅生成Xml序列化程序集作为构建的一部分.

希望这可以帮助.

  • 我遇到了同样的问题,但使用 VS 2022 并且该解决方案仍然有效。但是,我想澄清一下,对于 VS 2022,GenerateSerializationAssemblies 的位置位于:右键单击项目-&gt;属性-&gt;编译-&gt;AvancedCompileOptions-&gt;GenerateSerializationAssemblies (2认同)

小智 5

  1. 在解决方案资源管理器中,右键单击抛出错误的项目;然后点击属性。
  2. 在打开的窗口中,单击左侧的 Build 选项卡。
  3. 找到生成序列化程序集选项。
  4. 将 ti 设置为 OFF 或 AUTO。