Слишком длинная командная строка для sgen.exe
У меня есть проект.net 4.5 с большим количеством пакетов nuget, и я обновил его до 4.7.2. Чтобы решить некоторые конкретные проблемы обновления с пакетами (например, requireReinstallation="true"
в packages.config
) Я обновил соответствующие пакеты. Теперь я обновил пакеты и некоторые новые пакеты, такие как
`<package id="System.AppContext" version="4.1.0" targetFramework="net472" />`
........(some other)
<package id="System.Xml.ReaderWriter" version="4.0.11" targetFramework="net472" />
На данный момент, я могу построить это, но когда я пытаюсь сделать это с Generate serialization assembly
вариант я получил ошибку в teamcity (и локально) вроде
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sgen.exe /assembly:C:\buildAgent\work\6b1c1da90609c252\Site\obj\TeamCity\Site.dll /proxytypes
/reference:C:\buildAgent\work\6b1c1da90609c252\packages\AjaxMin.4.48.4489.28432\lib\net20\AjaxMin.dll
[SGen] C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\Microsoft.Common.CurrentVersion.targets(3463, 5): warning MSB6002: The command-line for the "SGen" task is too long. Command-lines longer than 32000 characters are likely to fail. Try reducing the length of the command-line by breaking down the call to "SGen" into multiple calls with fewer parameters per call.
[SGen] C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\Microsoft.Common.CurrentVersion.targets(3463, 5): error MSB6003: The specified task executable "sgen.exe" could not be run. The filename or extension is too long
Конечно я могу отключить Generate serialization assembly
но я не хочу Я думаю, что проблема в слишком большом количестве аргументов в командной строке. После того, как я обновил проект, общее количество зависимостей достигло предела.
Как я могу решить эту проблему? breaking down the call to "SGen" into multiple calls with fewer parameters per call
(как?) или что-то еще
2 ответа
Я не думаю, что есть простое решение. sgen не поддерживает файлы RSP.
Я бы посоветовал оценить командную строку (например, из журналов msbuild) - количество ссылок (аргументов) и длина пути к файлу, вероятно, плохо работают вместе. Попробуйте реструктурировать свой проект так, чтобы он соответствовал ограничениям (32 тыс. Символов), используя меньше ссылок или по возможности более короткий путь к файлу.
Когда вы создаете проект C# в Visual Studio и получаете сообщение об ошибке Ошибка MSB6003 Не удалось запустить указанный исполняемый файл задачи «sgen.exe». System.ComponentModel.Win32Exception (0x80004005): имя файла или расширение слишком длинное, вы можете исправить это, перейдя в свойства проекта C# и на вкладке «Сборка» отключите параметр «Создать сборку сериализации».
Примените этот параметр как к конфигурации отладки, так и к конфигурации выпуска, в противном случае он работает локально (отладка), но не работает на вашем сервере сборки (выпуск).
См. XML-сериализатор Generator Tool (Sgen.exe) для получения дополнительной информации об этом инструменте.