如何防止 Visual Studio 在 Web 项目中“发布”XML 文档文件?

Posted

技术标签:

【中文标题】如何防止 Visual Studio 在 Web 项目中“发布”XML 文档文件?【英文标题】:How to prevent Visual Studio from "publishing" XML documentation files in web projects? 【发布时间】:2012-02-16 15:41:13 【问题描述】:

注意:这个问题类似于How to prevent the copy of XML documentation files in a release mode build?,但不一样,那里的答案不适用。继续阅读以找出原因。 (如果您不同意,请在 cmets 或聊天中询问,我很乐意详细说明)。


我有一个库项目 (myLibrary) 和一个引用该库的 ASP.NET Web 应用程序项目(两者都在同一个解决方案中)。为库项目选中“生成 XML 文档文件”,因为我希望在开发时拥有那些不错的 IntelliSense 功能。

当我发布 Web 应用程序(项目上的上下文菜单/发布...)时,它仅将运行应用程序所需的文件(无源代码等)复制到某个发布目录。那挺好的。不幸的是,它还复制了库的 XML 文档文件。由于我认为我们图书馆的文档是商业机密,我不希望它最终出现在客户的服务器上。因此,我们必须记住在部署之前手动从发布目录中删除此文件。

有没有办法防止 Visual Studio 在发布 ASP.NET 项目时复制此文件,但在开发时仍保留 XML 文档 IntelliSense 的好处?

【问题讨论】:

【参考方案1】:

假设您使用不同的配置进行开发和发布(以及其他任何配置),取消选中“XML 文档文件”/关闭特定配置的生成将阻止它在不需要时被部署。另一种选择是删除文件的构建后操作。

这两个选项中的前者看起来更优雅。

【讨论】:

这并不理想,因为 (a) 您需要手动编辑 vbproj 文件以便为调试/发布设置不同的值,以及 (b) 在设置“发布”时编码时您会错过一些 Intellisense 功能,但它似乎是迄今为止最好的选择。 @Heinzi 我不相信您不能在 UI 中按配置执行此操作,但您让我考虑进行完整性检查。 ...完整性检查:可以在 UI 中按配置指定。 我也刚刚检查过:您可以为 C# 项目执行此操作,但不适用于 VB 项目。在 VB 项目中,该设置用于 所有 配置(除非您在 vbproj 文件中手动覆盖它——然后 UI 中的复选框显示“不确定状态”)。 @Heinzi 很抱歉,我没有仔细检查 VB.NET 项目。【参考方案2】:

有没有办法阻止 Visual Studio 复制此文件时 发布 ASP.NET 项目,

在发布模式下关闭 XML 文档

但仍保留 XML 的优点 开发时的文档 IntelliSense?

在调试模式下on / off 开启 XML 文档。 Intellisense 会以任何一种方式工作。

【讨论】:

我不同意你的最后一句话:如果为库关闭了 XML 文档,则显示方法摘要(刚刚测试过:关闭、清理项目、编写代码) .【参考方案3】:

还有另一种解决方案。只需在您的 csproj 文件的开头某处包含以下内容:

<AllowedReferenceRelatedFileExtensions>.pdb</AllowedReferenceRelatedFileExtensions>

就是这样。 XML 文件将不再发布。当然,你可以根据具体的配置来设置。

【讨论】:

注意:此更改将停止输出引用程序集(在同一解决方案中)中的 .config 文件。【参考方案4】:

我在 Express 中这样做,但这似乎对我有用...

    去了物业(项目) 点击发布标签 单击应用程序文件按钮 选中显示所有文件 将 xml 文件设置为排除

正如我所说,使用 Express 2010,但这有效(它没有将文件复制到发布位置)。

【讨论】:

谢谢,但这仅适用于 Windows 应用程序项目,不适用于 Web 应用程序。他们有不同的发布过程,据我所知,你不能在那里配置单个文件。 啊,错过了那部分。对不起。【参考方案5】:

您可以通过在 Visual Studio 上添加插件 Web 部署项目来做到这一点,该项目可以从这里下载:http://www.microsoft.com/download/en/details.aspx?id=19995 并排除您需要的任何文件/文件夹,请按照找到的步骤 here

【讨论】:

以上是关于如何防止 Visual Studio 在 Web 项目中“发布”XML 文档文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Visual Studio 在调试时启动 WcfSvcHost.exe?

如何在 Visual Studio Code 中临时禁用“防止脏写”功能

如何防止Visual Studio 2017添加对NugetFallbackFolder的引用

如何防止 Visual Studio 警告缺少调试信息?

如何防止 Visual Studio 提示从 app.config 更新 .settings 文件

如何防止 Visual Studio 更改我的 csproj 格式