不要在 ASP.NET 中发布特定文件夹

Posted

技术标签:

【中文标题】不要在 ASP.NET 中发布特定文件夹【英文标题】:Don't publish particular folder in ASP.NET 【发布时间】:2009-04-22 19:43:19 【问题描述】:

是否可以将 Web 项目中的文件夹排除在发布之外?我们有一些包含在特定项目文件夹中的文档和脚本,并被添加到项目中,但是当我进行 VS 发布时,我不希望它们进入生产服务器。

我知道他们不应该出现在项目中,但我想在我试图说服所有者修改他做事的方式之前找到一种解决方法。

【问题讨论】:

这个问题类似于以下问题 - ***.com/questions/41715/… - 我认为解决方案本身是相同的。 【参考方案1】:

老问题,但我发现如果我在 Windows 资源管理器中将文件夹标记为 hidden,它不会在您的解决方案中显示/发布。

这有助于阻止原始 Photoshop 图片包含在未使用且较大的上传中。尽管您可能想要编写自己的发布工具,但任何更复杂的东西。

【讨论】:

【参考方案2】:

这并不能准确回答您的问题,但我的感觉是,除非您是发布到服务器的单个开发人员,否则最好使用 MSBuild(或其他一些构建和直接部署解决方案)(从而能够非常精细地控制生产中的内容)。 MSBuild 不仅可以构建,而且使用一些扩展(包括开源类型),它也可以部署。微软有一个产品叫做 MSDeploy 处于测试阶段,这可能是一个更好的选择,但我没有使用它的经验,我不能肯定。

在我们的情况下,我们有一个虚拟工作站作为构建框,我们所要做的就是双击启动 MSBuild 项目的批处理文件。它使用 VSS 标记所有代码,获取最新版本,构建解决方案,然后将其部署到两台服务器。我们准确地部署我们想要部署的东西,仅此而已。我们对此非常满意。

唯一的缺点,如果它可以被认为是缺点,是我们至少必须学习如何使用 MSBuild。 VS 本身使用 MSBuild。

【讨论】:

这是有道理的。我希望像右键单击“不要部署此文件夹”之类的东西,但我认为我们需要更有条理的东西。无论如何,通过 Visual Studio 部署到 FTP 服务器就像拔牙一样,所以我们最好选择这条路线。【参考方案3】:

对于你不想去的文件,循环属性并将“复制到输出目录”设置为“不复制”

但是,此选项不适用于目录。

【讨论】:

输出目录不是/bin吗?【参考方案4】:

您能否通过 Visual Studio 将它们排除在项目之外以阻止它们被发布。它们仍将存在于文件系统中

【讨论】:

【参考方案5】:

据我所知,您可以做到这一点的唯一方法是将其从项目中排除,进行发布,然后将其重新包含在项目中。这可能是个问题。

【讨论】:

【参考方案6】:

可能有更好的方法来解决这个问题,但是当我们为我们的开发服务器发布构建时,我们将在构建完成后运行一个批处理文件以删除不需要的文件夹和 web.configs(所以我们不要覆盖已经部署的那些)。

【讨论】:

【参考方案7】:

根据http://www.mahingupta.com/mahingupta/blog/post/2009/12/04/AspNet-website-Exclude-folder-from-compilation.aspx,您只需在 Windows 资源管理器中为文件夹赋予“隐藏”属性,它就不会发布。我对此进行了测试,它对我有用。

对于快速而肮脏的目的来说,这似乎是一个简单的解决方案,但我认为它不会通过我们的版本控制(mercurial)。

【讨论】:

【参考方案8】:

选择所有不应发布的文件。

转到属性 放 构建动作 -> 无

必须对每个子目录重复该过程。

【讨论】:

以上是关于不要在 ASP.NET 中发布特定文件夹的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 2.0中发布网站生成dll的问题

如何在 ASP.NET 用户控件中指定 *.css 文件?

我的数据库系统找不到在 asp.net 中指定的文件

如何在 ASP.NET C# 中发送电子邮件

无法在 asp.net vb 网站中发送电子邮件

ASP.NET Core 文件上传 之 文件签名验证