2

当我在 dotnet 中编译用 VS 2019 编写的项目时出现此错误,我刚刚迁移到 dotnet core 6.0 并加载到 VS 2022 中。

Error   MSB6003 The specified task executable "sgen.exe" could not be run. System.ComponentModel.Win32Exception (0x80004005): The filename or extension is too long

由于文件名过长,XmlSerialization 似乎存在一个已知问题。修复包括关闭Generate Serialization 程序集和至少从 2017 年开始启用长文件名的官方 MS 修复。

应该可以在 VS 2019 的 UI 中禁用 XmlSerialization,并且应该可以在项目文件中添加:

<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>

但是,VS 2022 中没有通过 UI 执行此操作的选项,并且上面的配置似乎被忽略了。因此,我看不到如何避免 VS 2022 中的错误。我尝试在 VS 2019 中禁用它并在 VS 2022 中加载,但这不起作用。

更新:我还尝试将解决方案移动到具有 2 个字符名称的根目录。没有喜悦。

有任何想法吗?

4

1 回答 1

0

我只是再次尝试在项目文件中禁用,这次它起作用了。

<PropertyGroup>
   ...
   <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
</PropertyGroup>

VS 2022 似乎没有像 VS 2019 这样的 UI 选项,因此您似乎必须手动执行此操作。

我现在得到一个

The command "copy "\policy.xml" "" " exited with code 1 error

但这是一个不同的问题......

于 2021-11-12T10:56:58.150 回答