Как исправить "слишком длинная командная строка" при компиляции licx (lc.bat) с Mono xbuild
У меня есть довольно большое решение. Родительский проект, который загружает все, имеет много ссылок и что бы не убедиться, что все загружается. У меня также есть файл 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\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 - нагрузка = C: \ PROGRA ~ 2 \ мОНО-3 ~ 1.10 \ Lib \ моно \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
...................
......................
.........................
еще много-много разных строк с действительно длинными путями в решении
...................
то не получится с этой командой
Если не считать перемещения моего файла licx в другой проект, чтобы попытаться уменьшить количество ссылок на этот материал licx, то здесь можно сказать, что mono не следует включать определенные проекты или передавать аргументы через другой механизм.
Последующий вопрос Я думаю, последующий вопрос - почему lc.bat должен ссылаться на каждую DLL. Разве это не заботится только о файле licx и dll, на которые есть ссылки?
1 ответ
Если вы не можете использовать файл конфигурации, замените диск в командной строке или внутри командного файла, чтобы найти путь, наиболее часто используемый в командной строке.
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
и т.п.
Убедитесь, что вы используете правильный путь вместо (...) сокращенных.