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

时间:2008-12-10 22:02:31

标签: asp.net visual-studio visual-studio-2008 build-process publish

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

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

非常感谢任何见解!

编辑 - 2009-01-20后续行动

我仍然没有想到这一点,但这里有更多信息。

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

这就是我的Vista笔记本电脑上不同项目的样子:

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

两台计算机都运行Visual Studio 2008 Professional(版本9.0.30729.1 SP,根据Help-> About)。完全相同的版本。我怀疑操作系统的差异导致了这种功能的改变。它必须是某个地方的设置,对吧?有谁知道吗?

6 个答案:

答案 0 :(得分:12)

John是对的,唯一的区别是您的一个项目是Web Site Project,另一个是Web Application project。除非您在 Web应用程序项目中,否则您将看不到“转换为Web应用程序”选项。我知道......这是非常误导的。这背后的原因源于你convert to a web application project的方式。如果你计划转换它(这可能是一个真正的痛苦,取决于它是如何设置的),那么你需要意识到一些差异:

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

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

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

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

祝你好运

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

发布网站时,Visual Studio旨在确保目标文件夹包含您的网站文件,而不是其他任何内容。

答案 4 :(得分:0)

显然这个功能将在VS2010中出现 - 这就是Vishal Joshi在TechEd EMEA会议上宣布的“PDC307:Microsoft Visual Studio 10:Web Development Futures”

答案 5 :(得分:-2)

该网站已从更新图层中的网站进行了更新。