11

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

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

任何见解表示赞赏!

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

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

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

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

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

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

4

6 回答 6

12

John 是对的,唯一的区别是您的项目之一是网站项目,而另一个是Web 应用程序项目。除非您在Web 应用程序项目中,否则您不会看到“转换为 Web 应用程序”选项。我知道……这是非常具有误导性的。这背后的原因源于您转换为 Web 应用程序项目的方式。如果您打算转换它(这可能是一个真正的痛苦,取决于它的设置方式),那么您需要注意一些差异:

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

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

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

我已经转换了其中一些项目,只要“app_code”文件夹中没有很多代码,我发现它们运行得相当顺利。您可以尝试一下,看看它是多么容易,如果看起来会很痛苦,我建议FileZilla只需 FTP 就可以了,免得您头疼。

祝你好运

于 2009-01-30T23:21:18.333 回答
3

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

于 2009-01-30T15:55:49.827 回答
1

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

于 2010-10-12T22:05:54.397 回答
0

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

发布网站时,Visual Studio 旨在确保目标文件夹包含您的网站文件,并且绝对没有其他内容。

于 2008-12-10T22:19:05.087 回答
0

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

于 2008-12-11T11:54:15.673 回答
-2

该站点已从更新图层中的站点更新。

于 2010-06-10T10:13:46.393 回答