【发布时间】:2018-11-25 01:45:53
【问题描述】:
我有一个包含很多 nuget 包的 .net 4.5 项目,我将其升级到 4.7.2。为了解决软件包的一些特定更新问题(如packages.config 中的requireReinstallation="true"),我升级了相关软件包。现在我已经升级了包和一些新的包,比如
`<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(怎么做?)或者别的什么
【问题讨论】:
-
你能找到实际的命令行参数吗?超出限制了吗?
-
@kennyzx 是的,他超出了限制(~38k 个符号)
-
我在我的项目中发现了一些旧的和未使用的代码。它是 WebRereferense->... *..wsdl 和其他一些类型。我删除了类型,现在 sgen.exe 根本不生成 ProjectName.XmlSerializers.dll。所以我决定在那一刻不在我的项目中使用
Generate serialization assemblysgen。但无论如何,我很高兴听到如何解决 sgen 参数字符串过长的问题。
标签: c# build nuget sgen packages.config