【问题标题】:Msbuild ignores azure publish profile settings - Visual Studio 2015 - .Net 4.6.1Msbuild 忽略 azure 发布配置文件设置 - Visual Studio 2015 - .Net 4.6.1
【发布时间】:2017-12-05 12:47:40
【问题描述】:

我的解决方案中有 2 个 Web API 项目。一个项目是 4.5.1,另一个项目是 4.6.1。

.Net 框架 4.5.1 的项目使用带有以下参数的 msbuild 任务构建 p,并将代码正确发布到 azure。一切都好!!

带有 .Net framework 4.6.1 的项目可以使用带有以下参数的 msbuild 任务正确构建。

使用上述参数构建时,创建的包未部署到 azure。请参阅下面的日志。

请帮忙,这真的很奇怪。我看到的两个 web api 解决方案之间的唯一区别是 .Net 框架版本。

【问题讨论】:

  • 你能分享两个发布配置文件中的设置吗?
  • 那些包含我网站的敏感数据。我可以删除它们并分享吗?
  • 是的,删除敏感数据然后分享。
  • wpp 文件解决了我的问题@EddieChen-MSFT。谢谢

标签: azure visual-studio-2015 msbuild tfsbuild azure-pipelines


【解决方案1】:

首先建议您手动使用msbuild.exe 命令进行发布。这将缩小与 TFS 端相关的问题。

还将构建代理上的 Azure SDK 更新到最新版本 (Azure SDK for .NET 3.0)。

尝试在您的 MSBuild 参数中强制使用“PublishProfileRootFolder”参数。详情请参考这个问题:MsBuild not finding publish profile

【讨论】:

  • 我使用来自 azure 的发布配置文件,并在构建源代码时将其作为参数传递给 msbuild,所以我不知道我可以使用多少 PublishProfileRootFolder
  • @KarthikeyanVK 您是否尝试过直接使用具有相同参数的 msbuild 命令用于具有 .Net 框架 4.6.1 的项目,这是否正常工作。如果问题与 TFS 端或构建定义相关,这将缩小范围。
  • 嗨@KarthikeyanVK,有任何更新,你知道了吗?
  • drive.google.com/open?id=12zq5FU8BxyjJIqYCR2tyeZADf2fDFaVq 共享工作和不工作配置文件
  • @KarthikeyanVK 这是发布设置文件,发布配置文件是什么?另一方面,你能分享一下 OneDrive 上的详细日志吗?
【解决方案2】:

使用 wpp 文件来 xml 查看您的发布设置,这将在 msbuild 运行时创建发布配置文件。使用下面的 xml sn-p 创建 wpp 文件。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

  <!--
  When using this file you must supply /p:PublishSettingsFile as a parameter and /p:DeployOnBuild=true
  -->  
  <PropertyGroup Condition=" Exists('$(PublishSettingsFile)')">
    <!-- These must be declared outside of a Target because they impact the Import Project flow -->
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <DeployTarget>WebPublish</DeployTarget>

    <PipelineDependsOn>
      GetPublishPropertiesFromPublishSettings;
      $(PipelineDependsOn);
    </PipelineDependsOn>
  </PropertyGroup>

  <Target Name="GetPublishPropertiesFromPublishSettings" BeforeTargets="Build" Condition=" Exists('$(PublishSettingsFile)')">
    <PropertyGroup>
      <_BaseQuery>/publishData/publishProfile[@publishMethod='MSDeploy'][1]/</_BaseQuery>
      <!-- This value is not in the .publishSettings file and needs to be specified, it can be overridden with a cmd line parameter -->
      <!-- If you are using the Remote Agent then specify this as RemoteAgent -->
      <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    </PropertyGroup>

    <ItemGroup>
      <_MSDeployXPath Include="WebPublishMethod">
        <Query>$(_BaseQuery)@publishMethod</Query>
      </_MSDeployXPath>

      <_MSDeployXPath Include="MSDeployServiceURL">
        <Query>$(_BaseQuery)@publishUrl</Query>
      </_MSDeployXPath>

      <_MSDeployXPath Include="SiteUrlToLaunchAfterPublish">
        <Query>$(_BaseQuery)@destinationAppUrl</Query>
      </_MSDeployXPath>

      <_MSDeployXPath Include="DeployIisAppPath">
        <Query>$(_BaseQuery)@msdeploySite</Query>
      </_MSDeployXPath>

      <_MSDeployXPath Include="UserName">
        <Query>$(_BaseQuery)@userName</Query>
      </_MSDeployXPath>

      <_MSDeployXPath Include="Password">
        <Query>$(_BaseQuery)@userPWD</Query>
      </_MSDeployXPath>
    </ItemGroup>

    <XmlPeek XmlInputPath="$(PublishSettingsFile)"
             Query="%(_MSDeployXPath.Query)"
             Condition=" Exists('$(PublishSettingsFile)')">
      <Output TaskParameter="Result" PropertyName="%(_MSDeployXPath.Identity)"/>
    </XmlPeek>
  </Target>
</Project>

使用上面的 xml 代码 sn-p 创建一个 wpp 文件并将其放置在您的 csproj 所在的同一个项目中,或者如果您将 wpp 放置在 csproj 文件夹之外以便在多个项目中重复使用,那么您需要添加 /p :WebPublishPipelineCustomizeTargetFile=

msbuild.exe MyProject /p:WebPublishPipelineCustomizeTargetFile=<path-to.targets-file>  /p:VisualStudioVersion=11.0 /p:DeployOnBuild=true /p:PublishSettingsFile=<path-to-.publishsettings> 

你可以找到更多关于实现的细节@http://sedodream.com/2013/06/05/HowToPublishAVSWebProjectWithAPublishSettingsFile.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2011-11-12
    • 1970-01-01
    相关资源
    最近更新 更多