Определение сборки TFS использует аргументы msbuild для создания файлов в промежуточном каталоге

В определении сборки у меня есть эти параметры в аргументах msbuild: / p: DeployOnBuild = true / p: WebPublishMethod = FileSystem / p: PackageLocation = $ (build.stagingDirectory) \ DeployPackages \ / p: PackageAsSingleFile = false / p: SkipInvalidConfigurations = true / p: AutoParameterizationWebConfigConnectionStrings = False / p: GenerateProjectSpecificOutputFolder = true

Все необходимые файлы находятся в папке DeployPackages, но список папок и подпапок для доступа к коду слишком велик. Есть ли способ уменьшить количество папок? _work \ 5 \ a \ DeployPackages \ Archive \ Content \ d_C \ tfsbuild_work \ 5 \ s \ Main \ AdService \ obj \ DEVE \ Package \ PackageTmp \

и это папка PackageTmp, содержащая файл, который мне нужно скопировать на наш сервер.

Благодарность


person Captain Kirk    schedule 01.03.2017    source источник
comment
Какую сборку вы используете - сборку XAML или Vnext?   -  person PatrickLu-MSFT    schedule 02.03.2017


Ответы (2)


Вы можете использовать следующие аргументы:

/p:outdir="$(build.artifactstagingdirectory)\DeployPackages"
person Eddie Chen - MSFT    schedule 06.03.2017

Обновить

Чтобы уменьшить путь и структуру папки, вы можете использовать другой аргумент вместо $ (build.stagingDirectory) в расположении пакета. Такие как

/p:PackageLocation="$(BuildConfiguration)"\DeployPackages\XX.zip

or

/p:PackageLocation="$(build.artifactstagingdirectory)\DeployPackages\XX.zip

Кроме того, если у вас возникла проблема с длинным путем, самый эффективный и простой способ - это потратить некоторое время на настройку структуры файлов / папок.

Например: вместо \xx\Build\Drop\ProjectName просто используйте \xx\Build\Drop (или \xx\Builds), поскольку имя проекта также присутствует в имени сборки.

person PatrickLu-MSFT    schedule 02.03.2017
comment
Я использую следующий сервис сборки (vnext). Я хочу перейти от: _work \ 5 \ a \ DeployPackages \ Archive \ Content \ d_C \ tfsbuild_work \ 5 \ s \ Main \ AdService \ obj \ DEVE \ Package \ PackageTmp \ к этому: _work \ 5 \ a \ DeployPackages \ AdService [это имя проекта] \ файлы, необходимые для размещения здесь, если я изменю аргумент msbuild PackageAsSingleFile = true. Он будет генерировать zip-файл вместо того, чтобы помещать файл в структуру папок, но структура папок в zip-архиве такая же, как и у другой. - person Captain Kirk; 02.03.2017
comment
Предлагаю использовать /p:PackageAsSingleFile=true. Какой-нибудь блог для справки Как упаковать веб-проект для развертывания из командной строки. Возможно, что-то не так с вашим build.stagingDirectory. Дважды проверьте это, если ваш build.stagingDirectory слишком длинный и слишком раздутый. Расположение пакета в структуре папок должно быть таким же. - person PatrickLu-MSFT; 03.03.2017
comment
@CaptainKirk Кроме того, вы также можете попробовать изменить /p:PackageLocation на /p:PackageLocation="$(BuildConfiguration)such, как указано в этой ссылке: stackoverflow.com/questions/33904574/ - person PatrickLu-MSFT; 03.03.2017
comment
@CaptainKirk Как и предложил Эдди, вы должны использовать другой аргумент вместо $(build.stagingDirectory) в местоположении пакета. - person PatrickLu-MSFT; 06.03.2017