ASP.NET网站“发布”与Web部署项目

14
如果我决定使用 ASP.NET 网站的“发布”选项,而不是 Web 部署项目,那么我是否可以进行自定义的 MsBuild 操作?或者如果我想在编译/部署期间执行自定义的 MsBuild 操作,是否需要使用 WDP?
4个回答

4
我认为发布选项是VS.NET开发工具集中的一部分,开发人员可以使用它在开发机器上发布网站。它并不是真正用于实际部署的。
如果需要自定义操作,则Web部署项目更适合多人定期运行的实际部署,并且每次构建都需要创建。
我还会考虑其他三个选项:
- PowerShell:一个良好的方式来脚本化IIS、设置网站等。您甚至可以从OO代码(如C#)构建cmdlet,供您的脚本调用。许多专业IT公司使用它来部署大型网站。 - MSDeploy:一个新的网站部署工具,可以将vroot复制到几台服务器上。非常适合拥有黄金映像,然后将其快速传播到各个地方。 - C#应用程序:如果您是更高级的开发人员,则始终可以编写自己的应用程序,通过进程复制文件并使用WMI配置IIS。更难,但您有完全的控制。

2

您可以使用自定义MSBuild选项。事实上,您可以在配置为发布为网站的sln文件上执行MSBuild,然后将预编译的网站文件复制到Web服务器上。我们在内部使用来自Thoughtworks的Cruise Control.net进行此操作。

sln文件包含有关预编译网站位置的信息:

Release.AspNetCompiler.VirtualPath = "/PrecompiledWeb"
Release.AspNetCompiler.PhysicalPath = "..\Web\"
Release.AspNetCompiler.TargetPath = "..\..\PrecompiledWeb\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "true"
Release.AspNetCompiler.Debug = "False"

2
我们不使用publish来部署我们的web项目,但我们曾经使用Web Deployment Projects。当我们切换到Visual Studio 2008时,我们遇到了很多问题,所以我们放弃了它们。
我可以告诉你的是,我们能够用aspnet_merge.exe替代我们使用的WDP功能。我们使用msbuild和aspnet_merge.exe的组合在脚本中完成我们的部署。

哇,直到你提到它,我才听说过aspnet_merge。这是文档:http://msdn.microsoft.com/en-us/library/bb397866.aspx - Dan Esparza

1

看起来您可以通过_CopyWebApplication MSBuild目标自定义发布任务。或者您至少可以创建一个批处理文件来调用该目标,以便进行自定义。

更多细节在这里在这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接