#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, спасибо за обмен, вы могли бы пометить это как ответ, чтобы это могло помочь другим членам сообщества, у которых возникают те же проблемы, и мы могли бы заархивировать эту тему, спасибо.