ошибка аргументов msbuild для нового веб-сайта

#asp.net-mvc #azure-devops #msbuild

#asp.net-mvc #azure-devops #msbuild

Вопрос:

Я столкнулся с проблемой с msbuild, которую я не смог решить.

Около 15 месяцев назад я унаследовал asp.net веб-решение mvc, содержащее около 6 веб-сайтов. Около года я создавал все эти сайты, используя конвейеры сборки Azure, и развертывал их с помощью конвейеров развертывания Azure.

Мы использовали эти аргументы msbuild для создания всех сайтов в решении.

 /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:PublishBaseUrl="$(build.artifactstagingdirectory)\" /p:DeployDefaultTarget=WebPublish
  

Это всегда работало просто отлично и создавало очень чистую структуру папок, которую мы могли легко развернуть.

Однако недавно я добавил в решение 7-й сайт, и после этого я теперь получаю следующую ошибку при попытке сборки с этими аргументами.

 C:sourcemyproject.csproj" (default target) (17) ->
(WebFileSystemPublish target) ->
  C:Program Files (x86)Microsoft Visual Studio2019EnterpriseMSBuildMicrosoftVisualStudiov16.0WebDeployMicrosoft.Web.Publishing.Deploy.FileSyst
em.targets(55,5): error : This specific WebPublishMethod(FileSystem) is not yet supported on msbuild command line.  Please use Visual Studio to publish.

error : Target WebFileSystemPublish Failed
  

Ошибка возникает только в новом проекте, только что добавленном в решение. Я попытался найти параметр в файле проекта, который может быть причиной этого, но на данный момент я ничего не придумал.

обновление: анализ журналов msbuild показывает следующую ошибку, возникающую только в новом файле csproj, добавленном в решение, указывающую на проблему с «целью по умолчанию»

введите описание изображения здесь

Ответ №1:

Мы не уверены, что вызвало указанную выше ошибку с msbuild. Основное изменение, о котором мы знаем, — это модификация с .net framework 4.5 на 4.7.2

Решением этой проблемы после большой работы и исследований было использование следующих аргументов msbuild в azure devops:

/p:WebPublishMethod=Файловая система /p:publishbaseurl=»$(build.artifactstagingdirectory) » /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish

и добавление этого файла в каждую папку проекта в нашем решении. ‘directory.build.props’

со следующим xml внутри

 <Project>
  <PropertyGroup>
    <PublishUrl Condition="'$(PublishBaseUrl)' != '' and '$(PublishUrl)' == ''">$(PublishBaseUrl)$(MSBuildProjectName)</PublishUrl>
  </PropertyGroup>
</Project>
  

Это мгновенно позволило нашим сборкам начать работу, создавая одну папку для каждого проекта в решении.

Комментарии:

1. Привет, @Matt, спасибо за обмен, вы могли бы пометить это как ответ, чтобы это могло помочь другим членам сообщества, у которых возникают те же проблемы, и мы могли бы заархивировать эту тему, спасибо.