代码之家  ›  专栏  ›  技术社区  ›  Jeremy

_带有web.config转换的copyWebApplication

  •  42
  • Jeremy  · 技术社区  · 15 年前

    我正试图让我的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都被复制。

    任何想法都会受到赞赏。

    1 回复  |  直到 13 年前
        1
  •  73
  •   Jabe    15 年前

    为此,我一直把头靠在墙上。在穿过最高层建筑的目标之后,我遇到了一些非常“不透明”的东西。

    长话短说:尝试使用新的 _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 . 这是错误的。发现 _复制Web应用程序 在第70行。评论是:

    原来的CopyWebApplication现在是一个传统应用程序,您仍然可以通过设置$( 使用wpp_copywebapplication . 默认情况下,它现在更改为在microsoft.web.publish.targets中使用wppcopyWebApplication目标。它允许利用web.config trsna信息。[全SiC ]

    哦,哦。 UseWPP_CopyWebApplication 默认为false(第27行),如果不想破坏现有的 _复制Web应用程序 . 因此,将其设置为真将实际使用引入vs 2010的新WPP材料。我更喜欢这个,而不是说一个“隐藏”的目标。