_CopyWebApplication与web.config转换

Jer*_*emy 43 msbuild msdeploy

我正在尝试在执行发布版本时自动发布我的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>
Run Code Online (Sandbox Code Playgroud)

这有效,但有一个问题.此输出与在Visual Studio中使用"发布"菜单项时生成的输出之间的差异在于,在使用MSBuild方法时,Web.Release.config转换不会应用于Web.config文件.而是复制了Web.config,Web.Release.config和Web.Debug.config.

任何想法都表示赞赏.

Jab*_*abe 74

为此,我一直在撞墙.在通过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
Run Code Online (Sandbox Code Playgroud)

很长的故事:

看看VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets.这是错的._CopyWebApplication在第70行中找到.评论是:

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

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

  • 当使用`/ p:OutDir = ..\publish \`重定向构建工件时,这也有助于编译TypeScript文件的问题. (2认同)