Visual Studio 2012& MVC 4:如何将单个文件/文件夹部署到文件系统?

时间:2013-06-20 09:06:06

标签: c# asp.net-mvc-4 deployment visual-studio-2012 ide

我正在使用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

以前有人遇到过这个问题吗?解决这个问题真是太棒了。

3 个答案:

答案 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进行生产部署,如下所示:

  1. 使用Debug build

  2. 进行正常开发
  3. 发布版本配置为使用具有以下属性的MSDeploy(可以在csproj文件或TeamCity环境变量中设置这些属性):

    • DeployOnBuild :true
    • DeployIisAppPath :sitename.in.iis
    • MSDeployPublishMethod :MSDeploy
    • CreatePackageOnPublish :true
    • PackageLocation :AbsoluteOrRelativeLocation \ Package.zip
    • SkipExtraFilesOnServer :true(可选)
    • IncludeSetAclProviderOnDestination :false(可选,如果为true,部署时可能需要很长时间)
    • PublishDatabases :false(可选)
    • ExcludeGeneratedDebugSymbol :true(可选)
    • * ExcludeApp_Data *:true(可选)
  4. TeamCity会使用FTP自动将构建的软件包上传到我们的生产服务器,但您也可以将其复制到某处。

  5. 在部署位置,您可以调用与包一起输出的cmd。您还可以传递一些标志,例如:

    Package.Deploy.cmd /y -enableRule:DoNotDeleteRule

  6. 这最后一步非常有效,因为它只更新已更改的文件。

    我不确定在您的情况下,您是否需要在更新之前将整个软件包放在生产服务器上,或者是否可以调整Package.Deploy.cmd以从构建位置执行此操作。