无法复制文件,拒绝访问路径

时间:2011-08-20 06:28:18

标签: c# visual-studio-2005 access-denied

我正在使用visual studio 2005从版本控制中获取代码后首先正确运行c#.net应用程序,但经过一些修改后,当我构建时出现这样的错误。

  

错误383无法将文件“.. \ root \ leaf \ Bin \ Debug \ test.Resources.xml”复制到       “斌\调试\ test.Resources.xml”。访问路径'Bin \ Debug \ test.Resources.xml'是       否认。 li.rollmodel

有没有人知道为什么会出现这个问题?

编辑我可以看到我的完整项目源代码物理文件夹是只读的,我无法删除该只读属性

首先,任何正文告诉我如何删除我已删除的文件夹的只读属性,但仍显示该文件夹,我从版本控制端尝试但效果相同。

44 个答案:

答案 0 :(得分:260)

我通过从bin文件夹中删除有争议的文件并重建项目来解决这个问题。

答案 1 :(得分:115)

确保该文件夹不是只读文件并重建解决方案

答案 2 :(得分:67)

我解决了这个问题: 关闭Visual Studio,再次打开它并加载解决方案,重建您的解决方案。我的问题发生在使用TFS和VIsual Studio 2010。

答案 3 :(得分:45)

终止进程{​​{1}}并重建。

答案 4 :(得分:22)

我也遇到了这个问题。

首先去检查你是否已将bin和obj文件夹映射到Source Control程序。

这可能会将您的文件从二进制文件夹转换为只读存档,这使得Visual Studio在编译代码时无法覆盖它们。

转到并删除这些文件夹中的映射,检查更改并重试。

我的问题发生在使用TFS(团队基础服务器)和Visual Studio 2010。

希望这有助于某人。

答案 5 :(得分:18)

以管理员身份运行Visual Studio

答案 6 :(得分:8)

我使用Visual Studio 2013.我遇到过这个问题2次:

  1. 第一次,我在没有管理员权限的情况下运行Visual Studio。所以,我关闭VS并使用“以管理员身份运行”选项启动它。这解决了我的问题。

  2. 第二次,我多次重启VS,每次都确保我以管理员身份运行它。此外,我多次重建解决方案。但是,尽管我犯了错误。 之后,我从目标位置删除了相关文件(该文件已经存在,可能来自其尝试复制到的位置的上一个版本)并重建了解决方案。在那之后,错误就消失了,一切都顺利进行了!

答案 7 :(得分:7)

在我的情况下,它是阻止该文件的防病毒软件。

答案 8 :(得分:7)

这在Visual Studio 2017中再次出现,在这种情况下,原因是Application Insights进程ServiceHub.DataWarehouseHost.exe。

线程enter image description here中讨论了一种解决方法,即在每次构建项目时向项目添加预构建事件以终止进程。引用该链接:

  
      
  • 右键单击项目
  • 上的属性   
  • 选择属性
  •   
  • 构建活动
  •   
  • 预构建事件命令行
  •   
taskkill /IM ServiceHub.DataWarehouseHost.exe /F 2>nul 1>nul
Exit 0
  
      
  • 保存并构建
  •   

答案 9 :(得分:6)

  

任何人都可以知道为什么会出现这个问题吗?

查看您通过手动复制解决问题的回答,我会说您正在处理的代码是由其他一些用户制作的(也是管理员权限),因此它已被锁定。通过执行复制 - ?粘贴,您使用所需的所有访问权限制作了源的OWN副本。唯一需要注意的是,在这种情况下,如果其他开发人员需要处理您的副本,他/她将会遇到您之前遇到的相同问题。

答案 10 :(得分:3)

首先转到文件的位置。然后右键单击文件的文件夹->属性-> 未选中的只读选项,然后将其应用于文件及其子文件夹。 它解决了我的问题。 祝您编码愉快!

答案 11 :(得分:3)

有同样的问题,但每次都没有选择重启Visual Studio ,因为问题有时会经常发生。

我通过安装Unlocker 尝试在安装时安装任何工具栏,因此不要忘记取消选中此)来处理它,此应用程序让我快速访问重命名/删除锁定的“.xml” - 文件。我知道这只是一种解决方法,但对我来说这是解决这个问题的最快解决方案。

答案 12 :(得分:3)

我重新添加了所有非.NET依赖项/引用,它就可以了。

答案 13 :(得分:2)

我看到的大多数答案都是客观地探索环境可能存在的问题,这对于 99% 遇到此问题的人来说可能是正确的(无法将文件从...复制到...访问被拒绝) .

我想我应该为 1% 由于其他原因而遇到此问题的人分享我的经验。

我编写了一个批处理文件重命名程序,用于处理数以万计的文件,我的 AntiVirus 将其解释为木马并自动隔离它。将此路径放在我的 AntiVirus 黑名单中,visual studio 永远无法将 *.exe 复制到 bin 文件夹中,从而导致无法复制 .exe。

我的解决方案是将此路径列入白名单,问题已解决。

干杯。

答案 14 :(得分:2)

我自己解决了这个问题。问题是我在另一个地方打开了解决方案。关闭后它可以工作

答案 15 :(得分:2)

如果将任何文件复制到解决方案中,请确保文件不处于“只读”模式。右键单击文件并取消选中属性选项解决了我的问题。

答案 16 :(得分:2)

我遇到了同样的错误,但我使用的是 Perforce 版本控制。以下是我修复它的方法。

  1. 关闭Perforce P4V 客户端
  2. 重新启动Visual Studio 2010(可能没有必要)
  3. 重建了成功的项目
  4. 同时感到特别高兴和反感

答案 17 :(得分:2)

旧帖子,但是这个僵尸正在打VS 2017(我还没有研究为什么它只是“一些”项目)。在这种情况下,它不是用户权限,而是IIS Express进程仍在使用文件。

您将在任务栏IIS Express icon中看到该图标

  1. 右键单击
  2. 退出
  3. 您应该能够rebuild,而不会收到这条令人讨厌的“权限被拒绝”消息。

这也是为什么“重新启动Visual Studio”将“解决”问题的原因。这样做,停止IIS Express。

Hth ...

答案 18 :(得分:2)

当我向解决方案添加新的安装项目时,我创建了这个问题,然后将文件直接从主应用程序项目的/ bin / release文件夹添加到安装项目的应用程序文件文件夹中。安装项目的源代码控制一直阻止我完成主应用程序项目的构建。

解决方案:在任何项目之外创建一个单独的转储文件夹,其中包含要包含在安装中的所有文件,并从那里添加它们。这是一个痛苦,因为现在我必须记住复制每个新安装包的所有文件。我可能会看到我是否可以使用后期构建操作做一些自动构建,以使流程更顺畅。

答案 19 :(得分:2)

我也有同样的问题。我收到的错误消息与无法复制相关,因为访问路径被拒绝。在我的情况下,所有我的dll和xml文件等都放在D:\ TFS \ Example \ Bin \ Debug文件夹中。

我右键单击Bin文件夹并单击属性,并在“属性”下看到“只读”复选框。

我取消选中了“只读”复选框,并在显示的新弹出窗口中单击“确定”并单击“确定”。

我回到Visual Studio并构建我的解决方案,它给了我错误消息。

Voilaa ..这次成功构建没有错误。

我不知道这是否完美,但我这样做是为了解决我的问题。

答案 20 :(得分:2)

检查任务管理器,确保没有挂起devenv.exe进程。杀掉失控的过程,然后再试一次。

答案 21 :(得分:1)

1)关闭Visual Studio解决方案

2)导航到命令提示符->以管理员身份运行-> iisreset / stop

3)导航到c-> Windows-> Microsoft.Net-> Framework64-> v4.030319->临时Asp.NET文件->删除所有文件和该路径中的文件夹。

4)导航回命令提示符-> iisreset / start

5)现在打开Visual Studio->以管理员身份运行->清理解决方案并进行构建(不要重新构建。.build仅对我有用)

答案 22 :(得分:1)

我能够通过从目标网站的bin文件夹中删除抱怨的目标文件(在您的示例" Bin \ Debug \ test.Resources.xml"中)来重新构建它那为我修好了。

答案 23 :(得分:1)

我也遇到过这个问题。以下是如何解决此问题的

  • 从项目中排除@NodeEntity public class User extends BaseEntity { public static final String HAS_ACCOUNT = "HAS_ACCOUNT"; @Index(unique = true) private String username; public String firstName; public String lastName; private String password; private Roles[] roles; private YodleeSession yodleeSession; @Transient private PasswordEncoder passwordEncoder; public User() {} public User(String username, String firstName, String lastName, String password, YodleeSession yodleeSession, PasswordEncoder passwordEncoder, Roles... roles) { this.username = username; this.firstName = firstName; this.lastName = lastName; this.yodleeSession = yodleeSession; this.passwordEncoder = passwordEncoder; this.roles = roles; this.password = encodePassword(password); } // Getters public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public String getUsername() { return this.username; } public String getPassword() { return password; } public YodleeSession getYodleeSession() { return yodleeSession; } public Roles[] getRoles() { return roles; } // Setters public void setUsername(String username) { this.username = username; } public void setFirstName(String firstName) { this.firstName = firstName; } public void setLastName(String lastName) { this.lastName = lastName; } public void setYodleeSession(YodleeSession yodleeSession) { this.yodleeSession = yodleeSession; } public void setPassword(String password) { encodePassword(password); } public void setPasswordEncoder(PasswordEncoder passwordEncoder) { this.passwordEncoder = passwordEncoder; } // Roles public enum Roles implements GrantedAuthority { ROLE_USER, ROLE_ADMIN; @Override public String getAuthority() { return name(); } } public void setRoles(Roles[] roles) { this.roles = roles; } // Bank accounts @Relationship(type=HAS_ACCOUNT, direction = Relationship.OUTGOING) private Set<Account> accounts; public Set<Account> getAccounts() { return this.accounts; } public void addAccount(Account account) { if (accounts == null) { accounts = new HashSet<Account>(); } accounts.add(account); } // Password private String encodePassword(String password) { return passwordEncoder.encode(password); } public void updatePassword(String old, String newPass1, String newPass2) { if (!password.equals(encodePassword(old))) throw new IllegalArgumentException("Existing Password invalid"); if (!newPass1.equals(newPass2)) throw new IllegalArgumentException("New Passwords don't match"); this.password = encodePassword(newPass1); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; if (nodeId == null) return super.equals(o); return nodeId.equals(user.nodeId); } } 文件夹。
  • 关闭视觉工作室。
  • C盘的磁盘清理。
  • 在visual studio重新开放项目。
  • 然后重建解决方案。
  • 运行项目。

这个过程对我有用。

答案 24 :(得分:1)

我也有同样的问题。我通过取消选中根文件夹的只读属性来修复它。

答案 25 :(得分:1)

右键单击您的MVC项目并单击clean选项。我有一个类似的问题,在重建之前清理项目为我解决了。

答案 26 :(得分:0)

转到文件的路径,然后取消选中此文件的只读复选框。

答案 27 :(得分:0)

简单解决方案:

只需升级以下软件包

Microsoft.CodeDom.Providers.DotNetCompilerPlatform v1.0.5 to v1.0.7

它将解决问题。

答案 28 :(得分:0)

我遇到了同样的问题,要解决此问题,我已经检查/完成了几件事

什么没用

1) Read/write permissions were given to directory 
2) Restarted visual studio
3) Tried deleting visual studio temp files

最后成功了

只需将Fred Morrison给出的命令粘贴到“包管理器控制台”中即可:

Get-Process | Where-Object -Property Name -EQ 'VBCSCompiler' | Stop-Process -Force -Verbose

注意:只是一个观察结果在这种情况下,重新启动Visual Studio可能不起作用,但是重新启动系统可以,因为停止销进程“ VBCSCompiler”是解决方案,所以我们可以采用任何一种方式。

答案 29 :(得分:0)

对我来说,问题在于解决方案中的另一个项目具有相同的.dll文件,该文件最近已签入。

手动将最近签入的.dll版本从另一个项目bin文件夹复制到正在生成错误的项目中的bin文件夹中。

对于我们的解决方案,较长期的解决方案是对解决方案中的所有项目使用完全相同的.dll,而不是在多个项目中使用相同的.dll文件,但是我不希望解决该问题,因此快速解决-dirty解决方案是仅复制较新的版本。

答案 30 :(得分:0)

我在这里进行了所有尝试,以某种方式删除了项目中的所有bin和obj文件夹均无效。从其他进程释放文件夹没有任何作用。重新启动没有任何反应。通过在主文件夹上取消选中每个文件来删除只读无济于事。

每个依赖最终都会使自己陷入困境。直接在依赖项文件夹中进行构建可以使我感到困惑。我打算重复这个问题,但是我发现有什么用。

你知道什么有用吗?

dotnet clean

答案 31 :(得分:0)

在尝试了几乎所有方法之后,只需将项目复制粘贴到不同的位置并构建项目......并且它起作用了。

答案 32 :(得分:0)

我在安装 Windows Update KB5003637 后开始发生。我的 VS2019 项目之前运行良好,但在安装 Windows Update 后出现此错误。卸载它,项目再次运行。

答案 33 :(得分:0)

在Visual Studio 2015中更改输出路径对我有用。这应该有帮助 - Changing the Build Output directory

答案 34 :(得分:0)

就我而言,我使用Visual Studio Community 7.1.5 for Mac将项目从Windows移植到OSX。诀窍是禁用项目首选项上的Use MSBuild engine (recommended for this type of project)选项:

enter image description here

答案 35 :(得分:0)

我试图注销并重新登录,这对我有用。希望这会帮助其他人。

答案 36 :(得分:0)

这可能是最初从源代码控制(TFS等)加载源的奇怪副产品,其中所有文件和文件夹都是写保护的。转到顶级目录并检查属性,您可以找到只读属性已选中。取消选中该选项,系统应询问您是否要将顶级下的所有目录设置为可写。这应该解决它。

答案 37 :(得分:0)

确保在路径名(path \ fileName.extension)之后附加文件名。我花了一个多小时没注意到这一点。

答案 38 :(得分:0)

我多次遇到此问题,我找到的解决方案是删除调试文件夹,然后重建您的解决方案/项目。为我工作!!

答案 39 :(得分:0)

清除“bin \ debug”中所有引用的库,然后在单击“Clean Solution”后右键单击解决方案资源管理器中的Solution。

重建!!

答案 40 :(得分:0)

所以我遇到了同样的问题,我的原因,我的开发文件夹共享,所以我可以使用mac作为使用Xamarin的IOS应用程序的构建主机。该项目在mac上运行,它获取了dll的所有权,因此我无法从其他任何地方更改该dll。只需在mac上停止应用程序就可以将所有权返还给我,从而再次允许完全访问权限。我希望这可以做到。

答案 41 :(得分:0)

我知道它是一个旧线程但是对于那些寻找答案的人,比如我几分钟之前,我建议先尝试重新启动计算机。仅此一点对我而言。以前甚至无法手工复制到文件夹。

答案 42 :(得分:0)

您不应将文件夹属性更改为not-readonly。 您看到此错误消息的原因是源控件假定您只将杂项文件存储在bin文件夹以外的其他位置,因为它为.Net自动创建的文件保留,并且不希望将它们添加到源文件中控制。

我建议您不要使用Environment.CurrectDirectory(我假设您当前正在使用),而是在%appdata%地址中创建一个名为“MyProjectName”的文件夹,然后使用:

System.IO.Path.Combine(Environment.GetEnvironmentVariable("appdata"),"YourProjectName")

答案 43 :(得分:-1)

如果在尝试其他任何事情之前有人想要一个额外的简单解决方

只需重新启动电脑即可。 打开Visual Studio,再次尝试构建。