如何防止 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的引用