新网站的 msbuild 参数失败
msbuild arguments failing for new website
我遇到了无法解决的 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 Studio19\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 文件上,表明“默认目标”存在问题
我们不确定导致上述 msbuild 错误的原因。我们知道的主要变化是从 .net Framework 4.5 到 4.7.2
的修改
经过大量工作和研究后,此问题的解决方案是在 azure devops 中使用以下 msbuild 参数:
/p:WebPublishMethod=FileSystem /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>
这立即让我们的构建开始成功地为解决方案中的每个项目创建一个文件夹。
我遇到了无法解决的 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 Studio19\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 文件上,表明“默认目标”存在问题
我们不确定导致上述 msbuild 错误的原因。我们知道的主要变化是从 .net Framework 4.5 到 4.7.2
的修改经过大量工作和研究后,此问题的解决方案是在 azure devops 中使用以下 msbuild 参数:
/p:WebPublishMethod=FileSystem /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>
这立即让我们的构建开始成功地为解决方案中的每个项目创建一个文件夹。