代码之家  ›  专栏  ›  技术社区  ›  Joshua Carmody

如何在不删除目标文件夹内容的情况下使用Visual Studio 2008中的“发布”功能?

  •  11
  • Joshua Carmody  · 技术社区  · 17 年前

    当我在Visual Studio 2008中使用Build->Publish网站时,大多数时候它编译该网站,然后简单地询问我“目标文件夹中的所有文件都将被删除”。继续?”(或有类似效果的东西)。但是,有时在Visual Studio中发布项目时,我会得到一个对话框,它可以让我选择完全替换文件夹的内容,或者简单地用较新的版本替换已更改的文件。

    我更喜欢在不完全删除文件夹的情况下发布,因为部署的应用程序创建用户文件和缓存文件,因为我不想采取额外的步骤来保存这些文件。但是,我不知道为什么Visual Studio不总是给我这个选项。这是我可以改变的地方吗?它是否与我使用的.NET版本相关?

    感谢您的洞察力!

    编辑-2009-01-20跟进

    我还没弄清楚,但这里有更多的信息。

    以下是我的Win XP桌面上的一个ASP.NET项目的发布功能:

    以下是我的Vista笔记本电脑上不同项目的外观:

    请注意,第二个屏幕截图中的单选按钮允许我选择在发布之前删除文件夹的内容,或者只覆盖匹配的文件。我想为每个项目都提供这些选项。

    两台计算机都在运行Visual Studio 2008 Professional(版本9.0.30729.1 SP,根据“帮助”->关于)。完全相同的版本。我怀疑是操作系统的差异导致了功能的改变。一定是在某个地方,对吧?有人知道吗?

    6 回复  |  直到 11 年前
        1
  •  12
  •   cgreeno    14 年前

    约翰是对的 唯一不同的是你的一个项目是 Web Site Project 另一个是 Web Application project . 你将看不到 转换为Web应用程序 “除非您在 Web应用程序项目 . 我知道。。。这是非常误导人的。这背后的原因是你 convert to a web application project . 如果您计划转换它(这可能是一个真正的屁股疼痛,取决于它是如何设置的),那么您需要注意一些区别:

    在一个 Web应用程序项目 所有内容都是预编译的。所有代码隐藏页都将编译成.dll。 网站项目 项目中没有任何内容是预编译的,编译器将编译所有内容以确保其有效,但未上载任何已编译的页面。当用户第一次尝试访问站点时,每个页面都被编译成自己的dll。这意味着 网站项目 您可以上传一个代码隐藏文件。

    命名空间-在 Web应用程序项目 默认情况下,命名空间是在 网站项目 它们不是。因此,如果您计划转换它们,可能需要花费一些时间来添加它们。

    项目文件-您会注意到 网站项目 没有“cproj”文件A Web应用程序项目 做。

    我已经转换了一些这样的项目,我发现只要“app_code”文件夹中没有太多代码,它们就相当顺利。你可以试一下,看看有多容易,如果它看起来会很痛,我建议 FileZilla 只需发送ftp文件,省去一些头痛。

    祝你好运

        2
  •  3
  •   John Sheehan    17 年前

    对于网站项目和Web应用程序项目,该对话框是不同的。在我的MVC项目(Web应用程序项目)中,我看到了其他选项。在我的常规ol网站项目中,我看到了第一个发布的对话框。

        3
  •  1
  •   jforward5    16 年前

    不确定此选项是否适合您,但您可以使用解决方案资源管理器中的“复制网站”功能。单击解决方案资源管理器顶部的“复制网站”图标。

        4
  •  0
  •   Guge    17 年前

    我认为您的问题的真正答案是应该将您的用户文件和缓存文件放在其他地方。

    发布网站时,Visual Studio旨在确保目标文件夹包含网站文件,而绝对不包含其他内容。

        5
  •  0
  •   Zhaph - Ben Duguid    17 年前

    显然,这项功能是在VS2010中推出的——这就是Vishal Joshi在TechEd EMEA会议“PDC307:Microsoft Visual Studio 10:Web开发未来”中宣布的内容。

        6
  •  -2
  •   vino    16 年前

    网站已从更新层中的网站更新。