Подтвердить что ты не робот

Незаконные символы в пути для пакета nuget

Я собираю приложение с помощью Cruise Control, команда похожа на это

<Exec Command="$(NugetToolPath) pack &quot;@(NuSpecs)&quot; -OutputDirectory \\servername\PackageSource -BasePath &quot;%(NuSpecs.RootDir)%(NuSpecs.Directory)&quot; -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 &quot;%(NuSpecs.RootDir)%(NuSpecs.Directory)%(Nuspecs.FileName).nuspec&quot; -OutputDirectory \\servername\PackageSource  -NoPackageAnalysis" />
4b9b3361

Ответ 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%, чтобы Дженкинс где-то выполнял, и проверьте, нет ли в нем забавных персонажей.