Незаконные символы в пути для пакета nuget
Я собираю приложение с помощью Cruise Control, команда похожа на это
<Exec Command="$(NugetToolPath) pack "@(NuSpecs)" -OutputDirectory \\servername\PackageSource -BasePath "%(NuSpecs.RootDir)%(NuSpecs.Directory)" -NoPackageAnalysis" />
Iv'e сузил ошибку, чтобы быть BasePath, она появляется как
-BasePath "D:\Code\Mobile_Trunk\PreCompiledWeb\Portal\Mobile LT Admin\"
Я знаю проблему, потому что она должна быть
-BasePath "D:\Code\Mobile_Trunk\PreCompiledWeb\Portal\Mobile LT Admin"
но поскольку я использую метаданные .Directory, они всегда будут возвращаться с\в конце
Я обычно не цитирую базовый путь, но поскольку в каталоге есть пробелы, у меня нет выбора. Есть ли способ обойти это? Я не знаю никаких других метаданных, которые возвратят полный каталог strucutre, кроме того, как я его выполнил
UPDATE:
Я пришел к этому решению, это все еще не помогло мне узнать, как обойти проблему с незаконным путем, но она работает.
<Exec Command="$(NugetToolPath) pack "%(NuSpecs.RootDir)%(NuSpecs.Directory)%(Nuspecs.FileName).nuspec" -OutputDirectory \\servername\PackageSource -NoPackageAnalysis" />
Ответы
Ответ 1
Просто вставьте пробел после каталога и перед символом кавычки:
-OutputDirectory "\\servername\PackageSource\ "
Смотрите принятый ответ здесь (сам вопрос не очень актуален, но ответ таков):
Как принять аргументы командной строки, заканчивающиеся на обратную косую черту
Эта увлекательная ссылка также связана с другим ответом на этот вопрос:
http://www.daviddeley.com/autohotkey/parameters/parameters.htm#WINCRULESDOC
Ответ 2
Мы получили эту ошибку, когда выполнили nuget restore
из Jenkins, где запустили агент JNLP на подчиненном узле.
Оказывается, что "Путь" в Illegal characters in path
означает переменную среды PATH, и в нашем случае nuget.exe наследовал переменную PATH, в которой были кавычки, то есть что-то вроде:
Path=C:\Program Files\foo;"C:\Program Files\bar"
Если вы используете Jenkins, добавьте echo %PATH%
, чтобы Дженкинс где-то выполнял, и проверьте, нет ли в нем забавных персонажей.