微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

新网站的msbuild参数失败

如何解决新网站的msbuild参数失败

我遇到了无法解决的msbuild问题。

大约15个月前,我继承了一个asp.net mvc Web解决方案,其中包含大约6个网站。大约一年以来,我一直在使用azure构建管道来构建所有这些站点,并使用azure部署管道进行部署。

我们一直在使用这些msbuild参数来构建解决方案中的所有站点

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

这总是可以很好地工作,并产生一个非常干净的文件夹结构,我们可以轻松地部署它。

但是,我最近在解决方案中添加了第7个站点,这样做之后,在尝试使用这些参数进行构建时,我现在收到以下错误消息。

C:\source\myproject.csproj" (default target) (17) ->
(WebFileSystemPublish target) ->
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\Web\Deploy\Microsoft.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文件上出现以下错误,表明“认目标”存在问题

enter image description here

解决方法

我们不确定是什么原因导致了上面的msbuild错误。我们知道的主要变化是从.net Framework 4.5到4.7.2的修改

经过大量工作和研究后,解决此问题的方法是在天蓝色的devops中使用以下msbuild参数:

/ 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>

这立即使我们的构建可以成功地为解决方案中的每个项目创建一个文件夹。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。