gpt4 book ai didi

msbuild - _CopyWebApplication 与 web.config 转换

转载 作者:行者123 更新时间:2023-12-03 06:50:04 35 4
gpt4 key购买 nike

我试图在执行发布构建时自动发布我的 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 目标之后,我发现了一些非常“不透明”的东西。

长话短说:尝试使用新的 _WPCopyWebApplication。它可以在我的机器上运行。由于遗留原因,旧的 _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。注释是:

The original _CopyWebApplication is now a Legacy, you can still use it by setting $(UseWPP_CopyWebApplication) to true. By default, it now change to use _WPPCopyWebApplication target in Microsoft.Web.Publish.targets. It allow to leverage the web.config trsnaformation. [all sic]

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

关于msbuild - _CopyWebApplication 与 web.config 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1983575/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com