5

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

有没有人遇到过这个问题?能解决这个问题真是太好了。

4

3 回答 3

4

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

于 2013-07-02T10:08:31.423 回答
2

进一步向下评论您提供的链接(http://www.west-wind.com/weblog/posts/2013/May/10/Publish-Individual-Files-to-your-Server-in-Visual-Studio- 20122#127707)请注意,您必须先配置并保存发布设置,然后该选项才会出现。

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

于 2013-06-28T12:15:29.947 回答
0

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

  1. 正常开发发生在 Debug 构建中

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

    • 部署构建:真
    • DeployIisAppPath : 站点名.in.iis
    • MS部署发布方法:MS部署
    • CreatePackageOnPublish : 真
    • PackageLocation : AbsoluteOrRelativeLocation\Package.zip
    • SkipExtraFilesOnServer : true (可选)
    • IncludeSetAclProviderOnDestination : false (可选,如果为 true,部署时可能需要很长时间)
    • 发布数据库:假(可选)
    • ExcludeGeneratedDebugSymbol : true (可选)
    • *ExcludeApp_Data*:真(可选)
  3. TeamCity 使用 FTP 自动将构建的包上传到我们的生产服务器,但您也可以将其复制到某个地方。

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

    Package.Deploy.cmd /y -enableRule:DoNotDeleteRule

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

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

于 2013-07-04T09:25:12.483 回答