我有一个非常大的解决方案。加载所有内容的父项目有很多引用,并且不能确保所有内容都被加载。我还有一个我们使用的第三方dll的licx文件。这一切在视觉工作室都很好用。
但是,当使用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中\单\ 4.5 .. \ xbuild-frameworks.NETFramework \ V4.0 \ RedistList ........ \ 4.0 \ System.dll中 --load = C:\ PROGRA〜2 \ MONO-3〜1.10 \ lib中\单\ 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吗?
答案 0 :(得分:0)
如果您无法使用配置文件,请在命令提示符下或批处理文件中替换命令行中最常用的路径。
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
等
确保使用正确的路径而不是(...)缩写的路径。