C# VisualStudio 2012&;MVC4:如何将单个文件/文件夹部署到文件系统?

C# VisualStudio 2012&;MVC4:如何将单个文件/文件夹部署到文件系统?,c#,asp.net-mvc-4,deployment,visual-studio-2012,ide,C#,Asp.net Mvc 4,Deployment,Visual Studio 2012,Ide,我正在VisualStudio 2012 Professional中使用ASP.NET MVC4构建一个用于数据可视化的相当复杂的web应用程序。由于技术原因(包括实时服务器端消息传递等),我必须通过文件系统将web应用部署到生产服务器,因此在大多数情况下我不能使用开发服务器 随着项目的发展和包含越来越多的脚本,部署几乎需要一分钟才能完成,即使在1000BASE-T以太网上也是如此,这非常烦人。在大多数情况下,仅从我的项目中“更新”特定的文件或文件夹是绝对足够的,因为大多数文件通常不会更改(例如

我正在VisualStudio 2012 Professional中使用ASP.NET MVC4构建一个用于数据可视化的相当复杂的web应用程序。由于技术原因(包括实时服务器端消息传递等),我必须通过文件系统将web应用部署到生产服务器,因此在大多数情况下我不能使用开发服务器

随着项目的发展和包含越来越多的脚本,部署几乎需要一分钟才能完成,即使在1000BASE-T以太网上也是如此,这非常烦人。在大多数情况下,仅从我的项目中“更新”特定的文件或文件夹是绝对足够的,因为大多数文件通常不会更改(例如JQuery和其他框架)

根据,自Visual Studio 2012.2以来,应该可以发布单个文件,但它不适用于我,上下文菜单中描述的选项不存在

这是我的VS的确切版本:

Microsoft Visual Studio Professional 2012
Version 11.0.60315.01 Update 2
Microsoft .NET Framework
Version 4.5.50709

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

在您给出的链接上的注释()下面有一条注释,您必须在出现该选项之前配置并保存了发布设置


我可以验证我从未发布过的项目是否没有发布单个文件的选项。我发布的一个版本确实有这个选项。

由于某些原因,您提到的博客文章中描述的这个功能只适用于发布方法“Web部署”。我在当前的MVC应用程序中使用了此功能,我注意到如果切换到“文件系统”,上下文菜单中描述的选项将消失。

我们有几个使用VS2010开发的Web项目(9.0)。我们使用TeamCity进行生产部署,如下所示:

  • 正常的开发是在调试构建时进行的

  • 发布版本配置为使用具有以下属性的MSDeploy(这些属性可以在csproj文件或TeamCity环境变量中设置):

    • 部署构建:true
    • 部署IISAPPATH:sitename.in.iis
    • MSDeployPublishMethod:MSDeploy
    • CreatePackageOnPublish:true
    • PackageLocation:绝对或相对位置\Package.zip
    • SkipExtraFilesOnServer:true(可选)
    • IncludeSetalProviderOnDestination:false(可选,如果为true,部署时可能需要很长时间)
    • PublishDatabases:false(可选)
    • ExcludeGeneratedDebugSymbol:true(可选)
    • *ExcludeApp_数据*:真(可选)
  • TeamCity使用FTP自动将构建包上传到我们的生产服务器,但您也可以将其复制到某个地方

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

    Package.Deploy.cmd/y-enableRule:DoNotDeleteRule

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


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

    谢谢您的回复,Kate。我保存了多个用于发布的配置文件,但没有该选项。不幸的是,我今天早上安装的VS2012更新3也没有任何帮助。我甚至创建了一个全新的MVC4测试项目。您是否尝试发布到本地文件系统(
    C:\deploy\project
    )并仅将更改的文件复制到服务器?我通常会动态编辑cshtml文件,并按预期进行更新。您好,Andre,是的,我正在发布到本地文件系统或映射共享,我认为VS也是如此。您所说的“仅复制更改的文件”到底是什么意思?有没有办法自动做到这一点?或者你是说手动?很不幸,我是说手动。在过去,我成功地使用
    xcopy/d
    只复制较新的文件。您甚至可以运行它来生成一个列表:
    xcopy/d/l fromA toB
    。我只是不确定这是否适用于网络共享。是的,这就是重点。这很难理解,因为IMHO将单个文件或文件夹复制到文件系统很可能比web部署更容易完成。