_CopyWebApplication 与 web.config 转换
我试图在执行发布构建时自动发布我的 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 都会被复制。
任何想法表示赞赏。
I am trying to have my web application automatically Publish when a Release build is performed. I'm doing this using the _CopyWebApplication target. I added the following to my .csproj file:
<!-- 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>
This works but with one issue. The difference between this output, and the output generated when using the Publish menu item in Visual Studio, is that the Web.Release.config transformation is not applied to the Web.config file when using the MSBuild method. Instead, Web.config, Web.Release.config, and Web.Debug.config are all copied.
Any ideas are appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为此我一直在用头撞墙。在浏览了 MSBuild 目标之后,我发现了一些非常“不透明”的东西。
长话短说:尝试使用新的
_WPPCopyWebApplication
。它可以在我的机器上运行。由于遗留原因,旧的_CopyWebApplication
不支持转换。这就是我所做的:长话短说:
看看
VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets
。这是非常错误的。在第70行找到_CopyWebApplication
。注释是:呃哦。
UseWPP_CopyWebApplication
默认为 false(第 27 行),如果您不想破坏现有的_CopyWebApplication
,这是有意义的。因此,将其设置为 true 实际上将使用 VS 2010 中引入的新 WPP 内容。与调用“隐藏”目标相比,我更喜欢这样做。I've been hitting my head against the wall for this. After hiking through the MSBuild targets I've come across something very "opaque".
Long story short: Try using the new
_WPPCopyWebApplication
. It works on my machine. The old_CopyWebApplication
does not support transformations for legacy reasons. This is what I do:Long story:
Have a look at
VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets
. It's so wrong. Find_CopyWebApplication
in line 70. The comment is:Uh oh.
UseWPP_CopyWebApplication
defaults to false (line 27) which makes sense if you don't want to break the existing_CopyWebApplication
. So setting it to true will actually use the new WPP stuff introduced to VS 2010. I prefer this over calling a "hidden" target.