visual-studio - 无法从 Visual Studio 项目中删除文件
问题描述
每当我尝试从我的 VS2015 C++ 项目中删除(甚至排除)任何文件时,我都会收到以下消息:
无法删除文件“...”。最可能的原因是该文件受源代码控制,此时无法删除。
尝试搜索此错误消息在任何地方都没有结果 - 我是唯一一个得到它的人吗?
我使用perforce,并且所有文件都被签出,所以VS应该对版本控制一无所知。
我能找到的唯一解决方案是手动从 vcxproj 文件中删除文件,这非常繁琐。
更新:问题似乎出在 Perforce 插件上。禁用它可以让我再次删除文件。这很奇怪,因为我从未为这个特定项目配置它。我也尝试将源代码控制切换为无,但每次我重新启动 VS 时它都会重新设置。
解决方案
我刚刚在使用 Visual Studio 2017 时遇到了这个问题。我做了一些非常广泛的故障排除,并找到了一种解决方法:
- 打开您看到此问题的解决方案/项目。
- 打开与 perforce 库的连接——即使您的解决方案不应该由 Perforce 管理——使用此选项:
File / Open Connection to a Perforce Depot...
- 您应该会在“输出”选项卡下看到一个警告对话框或一条警告行,上面
Perforce Source Control
写着类似"Solution is not under your client's root folder"
. 如果您也没有看到,您可能应该将整个解决方案移动到不在您的客户端规范中的位置(如果可能),或者从您的 perforce 客户端规范中排除整个解决方案文件夹。这样,P4VS 不应该自动将该解决方案中的文件添加到 Perforce。 导航:
Tools / Options / Source Control / Perforce - General
...并取消选中此选项以抑制步骤 3 中令人讨厌的警告对话框,否则每次打开该解决方案时都会出现该对话框:
Warn if solution is outside workspace root
现在,您应该能够在没有 P4VS 干扰的情况下再次删除文件。(公平警告:这种解决方法可能有我不知道的其他副作用,但到目前为止它对我有用。)
推荐阅读
- ios - 具有多个 UIPickerViews 和数组的 UIViewController
- database - 我的数据没有正确保存在我的数据库中
- sql - 问题要求提供“入围列”,但我收到了一个错误
- docker - Kubernetes:为 Postgres + Tomcat 应用程序建模 Jobs/Cron 任务
- android - Android:TextInputEditText 仅在更改焦点后显示文本
- xcode - 在 Xcode 11 Beta 5 中的 API 更改后,如何在 SwiftUI 中为 TextField 使用 RoundedBorderTextFieldStyle?
- arrays - SAS中二维数组的递归定义
- .net-core - dotnet vstest 与 nunit 不输出写入
- mysql - 表中的随机记录
- java - 有没有办法在 FreeMarker 电子邮件模板中包含 CSS?