我正在使用VisualStudio 2012 Professional中的ASP.NET MVC4构建一个相当复杂的Web应用程序,用于数据可视化。由于技术原因(涉及实时服务器端消息传递等),我必须通过文件系统将Web应用程序部署到我们的生产服务器,因此在大多数情况下我不能使用开发服务器。
随着项目的发展和包含越来越多的脚本,部署几乎需要一分钟才能完成,即使在1000BASE-T以太网上也是如此,这非常烦人。在大多数情况下,仅仅“更新”项目中的特定文件或文件夹是绝对足够的,因为大多数文件通常永远不会更改(例如JQuery和其他框架)。
根据this post,应该可以发布自Visual Studio 2012.2以来的单个文件,但它对我不起作用,上下文菜单中描述的选项不存在。
这是我VS的确切版本:
Microsoft Visual Studio Professional 2012
Version 11.0.60315.01 Update 2
Microsoft .NET Framework
Version 4.5.50709
以前有人遇到过这个问题吗?解决这个问题真是太棒了。
答案 0 :(得分:4)
由于某些原因,您提到的博客文章中描述的此功能仅适用于发布方法“Web Deploy”。我在当前的MVC应用程序中使用此功能,我注意到如果切换到“文件系统”,上下文菜单中描述的选项就会消失。
答案 1 :(得分:2)
关于您提供的链接(http://www.west-wind.com/weblog/posts/2013/May/10/Publish-Individual-Files-to-your-Server-in-Visual-Studio-20122#127707)的评论,请注意您必须在选项出现之前配置并保存您的发布设置。
我可以验证我从未发布的项目没有发布单个文件的选项。我发表的一个确实有这个选项。
答案 2 :(得分:0)
我们使用VS2010开发了几个Web项目(9.0)。我们使用TeamCity进行生产部署,如下所示:
使用Debug build
发布版本配置为使用具有以下属性的MSDeploy(可以在csproj文件或TeamCity环境变量中设置这些属性):
TeamCity会使用FTP自动将构建的软件包上传到我们的生产服务器,但您也可以将其复制到某处。
在部署位置,您可以调用与包一起输出的cmd。您还可以传递一些标志,例如:
Package.Deploy.cmd /y -enableRule:DoNotDeleteRule
这最后一步非常有效,因为它只更新已更改的文件。
我不确定在您的情况下,您是否需要在更新之前将整个软件包放在生产服务器上,或者是否可以调整Package.Deploy.cmd以从构建位置执行此操作。