【问题标题】:_CopyWebApplication with web.config transformations_CopyWebApplication 与 web.config 转换
【发布时间】:2010-12-31 07:30:40
【问题描述】:

我正在尝试让我的 Web 应用程序在执行发布构建时自动发布。我正在使用 _CopyWebApplication 目标执行此操作。我将以下内容添加到我的 .csproj 文件中:

  <!-- Automatically Publish in Release build. -->
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
  <Target Name="AfterBuild">
    <RemoveDir Directories="$(ProjectDir)..\Output\MyWeb" ContinueOnError="true" />
    <MSBuild Projects="MyWeb.csproj" Properties="Configuration=Release;WebProjectOutputDir=$(ProjectDir)..\Output\MyWeb;OutDir=$(ProjectDir)bin\" Targets="ResolveReferences;_CopyWebApplication" />
  </Target>

这可行,但有一个问题。此输出与在 Visual Studio 中使用“发布”菜单项时生成的输出之间的区别在于,使用 MSBuild 方法时,Web.Release.config 转换未应用于 Web.config 文件。而是复制了 Web.config、Web.Release.config 和 Web.Debug.config。

感谢任何想法。

【问题讨论】:

    标签: msbuild msdeploy


    【解决方案1】:

    为此,我一直把头撞在墙上。在穿越 MSBuild 目标之后,我遇到了一些非常“不透明”的东西。

    长话短说:尝试使用新的_WPPCopyWebApplication。它适用于我的机器。由于遗留原因,旧的 _CopyWebApplication 不支持转换。我就是这样做的:

    msbuild /t:Rebuild /p:OutDir=..\publish\;Configuration=Release;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False MvcApplication1\MvcApplication1.csproj
    
    # UseWPP_CopyWebApplication = true requires PipelineDependsOnBuild = false
    

    长篇大论:

    看看VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets。大错特错。在第70行找到_CopyWebApplication。注释是:

    原来的 _CopyWebApplication 现在是 Legacy,您仍然可以通过将 $(UseWPP_CopyWebApplication) 设置为 true 来使用它。 默认情况下,它现在更改为在 Microsoft.Web.Publish.targets 中使用 _WPPCopyWebApplication 目标。它允许利用 web.config trsnaformation。 [原文如此]

    哦哦。 UseWPP_CopyWebApplication 默认为 false(第 27 行),如果您不想破坏现有的 _CopyWebApplication,这很有意义。因此,将其设置为 true 将实际使用 VS 2010 中引入的新 WPP 内容。我更喜欢这个而不是调用“隐藏”目标。

    【讨论】:

    • 我想知道有没有办法修复复制通过其他项目引用的库以包含在 msbuild 输出目录中?
    • 我尝试使用 WebDeploy 使用 /p:WebPublishMethod=FileSystem 并使用 pubxml 文件来执行此操作。我无法让它工作。这个解决方案是我找到的最好的方法。一句忠告:没有 OutDir 属性集,我无法让它工作。即使它已在项目的属性中定义,您也需要将其包含在命令行中。
    • 这也有助于解决使用 `/p:OutDir=..\publish` 重定向构建工件时编译 TypeScript 文件的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2012-03-24
    • 1970-01-01
    • 2017-11-29
    • 2015-09-21
    相关资源
    最近更新 更多