“如何修复”;“命令行太长”;使用Mono xbuild编译licx(lc.bat)时

“如何修复”;“命令行太长”;使用Mono xbuild编译licx(lc.bat)时,mono,xbuild,licenses.licx,Mono,Xbuild,Licenses.licx,我有一个相当大的解决方案。加载所有内容的父项目都有大量引用,因此无法确保加载所有内容。我还有一个用于我们使用的第三方dll的licx文件。这一切在VisualStudio中都可以正常工作 但是,当使用xbuild(mono)编译相同的解决方案时,lic.bat命令失败,因为“命令行太长” 工具C:\PROGRA~2\MONO-3~1.10\bin\lc.bat执行以参数开始:--complist=my.licx--target=MyExe.exe--load=C:\PROGRA~2\MONO-3

我有一个相当大的解决方案。加载所有内容的父项目都有大量引用,因此无法确保加载所有内容。我还有一个用于我们使用的第三方dll的licx文件。这一切在VisualStudio中都可以正常工作

但是,当使用xbuild(mono)编译相同的解决方案时,lic.bat命令失败,因为“命令行太长”

工具C:\PROGRA~2\MONO-3~1.10\bin\lc.bat执行以参数开始:--complist=my.licx--target=MyExe.exe--load=C:\PROGRA~2\MONO-3~1.10\lib\MONO\4.5..\xbuild frameworks.NETFramework\v4.0\RedistList……。\4.0\System.dll --load=C:\PROGRA~2\MONO-3~1.10\lib\MONO\4.5..\xbuild frameworks.NETFramework\v4.0\RedistList……。\4.0\System.Configuration.Install.dll——load=C:\PROGRA~2\MONO-3~1.10\lib\MONO\4.5..\xbuild frameworks.NETFramework\v4.0\RedistList……。\4.0\System.Data.dll--load=C:\PROGRA~2\MONO-3~1.10\lib\MONO\4.5..\xbuild frameworks.NETFramework\v4.0\RedistList.\4.0\System.Management.dll--load=C:\PROGRA~2\MONO-3~1.10\lib\MONO\4.5..\xbuild frameworks.NETFramework\v4.0\RedistList.\4.0\System.ServiceModel.dll--load=C:\PROGRA~2\MONO-3~1.10\lib\MONO\4.5..\xbuild frameworks.NETFramework\v4.0\RedistList.\4.0\System.ServiceProcess.dll--load=..\Common\log4net.dll--load=C:\PROGRA~2\MONO-3~1.10\lib\MONO\4.5..\xbuild frameworks.NETFramework\v4.0\RedistList.\4.0\System.Configuration.dll

解决方案中有更多行具有真正长路径的不同DLL

然后该命令失败

除了将我的licx文件移动到另一个项目以尝试减少这个licx文件所包含的引用之外,这里是一种告诉mono不要包含某些项目或通过不同机制传递参数的方法

后续问题
我想接下来的问题是为什么lc.bat必须引用每个dll。它不是只关心licx文件和其中引用的DLL吗?

如果您不能使用配置文件,请在命令提示符下或批处理文件中对命令行中最常用的路径进行驱动器替换

Subst K: C:\PROGRA~2\MONO-3~1.10\lib\mono\4.5..\xbuild-frameworks.NETFramework\v4.0\RedistList........\4.0
然后将命令中的所有路径替换为K:。。。所以

--load=C:\PROGRA~2\MONO-3~1.10\lib\mono\4.5..\xbuild-frameworks.NETFramework\v4.0\RedistList........\4.0\System.dll 
变成

--load=K:\System.dll 
等等


确保使用正确的路径,而不是(…)缩写的路径。

听起来不错,但我没有权限修改xbuild在这里的功能,是吗?您的解决方案是针对这个问题的通用解决方案,还是我可以将其插入xbuild。是吗?我不知道xbuild。它会自动生成您的lc.bat文件吗?