CopyWebApplication与web.config转换

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

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

这有效,但有一个问题。 此输出与在Visual Studio中使用“发布”菜单项时生成的输出之间的区别在于,使用MSBuild方法时,Web.Release.config转换不会应用于Web.config文件。 相反,Web.config,Web.Release.config和Web.Debug.config都被复制。

任何想法都表示赞赏。


为了这个,我一直在撞墙。 在完成MSBuild目标之后,我遇到了一些非常“不透明”的东西。

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

msbuild /t:Rebuild /p:OutDir=..publish;Configuration=Release;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False MvcApplication1MvcApplication1.csproj

# UseWPP_CopyWebApplication = true requires PipelineDependsOnBuild = false

很长的故事:

查看VisualStudiov10.0WebApplicationsMicrosoft.WebApplication.targets 。 这是错误的。 在第70行找到_CopyWebApplication 。评论是:

最初的_CopyWebApplication现在是一个Legacy,你仍然可以通过将$( UseWPP_CopyWebApplication )设置为true来使用它。 默认情况下,它现在更改为在Microsoft.Web.Publish.targets中使用_WPPCopyWebApplication目标。 它允许利用web.config信息。 [全部原创]

呃哦。 UseWPP_CopyWebApplication默认为false(第27行),如果您不想中断现有的_CopyWebApplication 。 因此将其设置为true实际上会使用VS 2010中引入的新WPP内容。我更喜欢通过调用“隐藏”目标。

链接地址: http://www.djcxy.com/p/81631.html

上一篇: CopyWebApplication with web.config transformations

下一篇: Can TeamCity publish a Web project using the sln2008 build runner?