Невозможно скопировать файл - доступ к пути запрещен


238

Я использую Visual Studio 2005. После получения кода из системы контроля версий приложение c # .net работает правильно. Но после внесения некоторых изменений при сборке я получаю следующую ошибку:

Ошибка 383 Не удается скопировать файл ".. \ root \ leaf \ Bin \ Debug \ test.Resources.xml" в "Bin \ Debug \ test.Resources.xml". Доступ к пути 'Bin \ Debug \ test.Resources.xml' запрещен. li.rollmodel

Кто-нибудь знает, почему возникает эта проблема?

Изменить Я вижу, что вся папка с исходным кодом моего проекта доступна только для чтения, и я не могу удалить свойство только для чтения.

Во-первых, кто-нибудь может сказать мне, как удалить свойство «Только чтение» для этой папки? Я попытался удалить его, но свойство только для чтения сохраняется. Я пытался со стороны контроля версий, и это тоже не сработало.


Это на сетевом ресурсе? У вас есть административный доступ на вашем компьютере? Этот вопрос может лучше подойти на сервере или суперпользователя.
Арункумар

нет, я использую свою собственную машину, у меня есть административный доступ
Рикки

Я решил эту проблему, вручную скопировав файл из одного местоположения в требуемое место, вероятно, проблема связана с MSBUILD с файлом только для
чтения

Ответы:


277

Я решил эту проблему, удалив спорные файлы из папки bin и перестроив проект.


50
Старый пост, я знаю, но у меня была такая же проблема только сейчас. Убедитесь, что VS также закрыт, так как в некоторых случаях он будет запрещать доступ для удаления папки
Eon

1
Небольшое примечание: я не понял, сначала я должен удалить эти файлы в выходной папке основного проекта, а не в выходной папке библиотеки DLL. Итак, предупреждение здесь :)
Пьеро Альберто

6
В моем случае даже закрытия VS было недостаточно, чтобы освободить папку и позволить мне удалить ее - ProcessExplorer показал, что «VBCSCompiler.exe» все еще использует ее. В этом случае выход из Windows и (или просто уничтожение процесса) сделал свое дело, позволив мне пересобрать решение и заставить все работать снова.
С. Йенсен

2
в моем случае причина, по которой папка и решение превратились в ReadOnly, а впоследствии VS столкнулась с трудностями при его создании, заключалась в том, что какой-то файл не смог синхронизироваться с GoogleDrive и каким-то образом был заблокирован этим процессом. Поэтому для правильной перестройки мне пришлось закрыть GoogleDrive, а потом он просто отлично сработал.
Конрад

1
Я нашел виновником Bitdefender Antivirus Free.
Уорик

123

Просто убедитесь, что папка НЕ ​​только для чтения, и перестройте решение.


12
Я пытаюсь снять флажок «Только для чтения», заполненный зеленым цветом. Когда я нажимаю «Применить», затем «ОК», а затем снова проверяю свойства этой папки, я снова вижу в предыдущем состоянии (снова с флажком «Только для чтения», заполненным зеленым цветом). У кого-нибудь есть решение по этому вопросу?
Викрам

Также убедитесь, что файл не заблокирован. В моем случае файл был в общей папке, и кто-то другой открыл его.
Дэн Бешард

Закройте Visual Studio перед удалением атрибута только для чтения. Поскольку рассматриваемый файл может использоваться (заблокирован)
Гаутам Джайн

4
Создано расширение Visual Studio для очистки атрибутов dll ReadOnly и Hidden, блокирующих сборку. UnBlockDllExtension: marketplace.visualstudio.com/...
vrnithinkumar

69

Я решил эту проблему: закройте Visual Studio, снова откройте ее и загрузите решение, перестройте решение. Моя проблема возникла с использованием TFS и VIsual Studio 2010.


22
Добавьте ту же проблему в VS2013. Классический чехол The IT Crowd. «Здравствуйте, это ЭТО, вы пытались выключить и снова включить?».
Максим Роиллер

1
Тот же сценарий: TFS и VS 2010. Та же проблема. То же решение. +1
ajeh

2
Это произошло и на VS2015: p
Ю Мацуо

4
И то же самое в VS2017
arame3333

1
Я уже сходил с ума, пытаясь это исправить, оказался старый добрый метод, если что-то не работает, перезагрузите его, работал просто отлично
Михаил Сенютович

50

Убить процесс VBCSCompiler.exeи восстановить.


3
Это то, что решило это для меня. Спасибо, добрый незнакомец: D
Morsus

да, это оно.
kal kokah

Большое спасибо, вы добрый незнакомец! : D
Agent007

иногда это работало для меня не всегда, я должен сказать, что это решит часть этой проблемы, есть и кое-что еще, что вызывает эту проблему
Амит Бишт

Попробуйте также, это может помочь вам stackoverflow.com/a/12740768/2445111
Амит Бишт

23

Я тоже вмешался в эту проблему.

Сначала зайдите и проверьте, сопоставили ли вы папку bin и obj с программой Source Control.

Это может быть превращение ваших файлов из бинарных папок в архивы только для чтения, что делает невозможным перезапись их в Visual Studio при компиляции кода.

Перейдите и удалите сопоставление из этих папок, проверьте изменения и повторите попытку.

Моя проблема возникла с использованием TFS (Team Foundation server) и Visual Studio 2010.

Надеюсь, это кому-нибудь поможет.


1
Я просто хотел добавить, что ответ Heitorolecarte решил мою проблему, и это может произойти с Visual Studio 2012 и TFS2010.
Родни

20

Запустите Visual Studio от имени администратора


1
Примечание: вот краткий и простой способ всегда работать от имени администратора по умолчанию stackoverflow.com/questions/12257110/…
wmebane

Этот ответ сказал мне достаточно, что я знал, чтобы просто добавить разрешение на запись для «Пользователи» в моей выходной папке - и это немедленно решило мою проблему (которая заключалась в том, что я не мог опубликовать даже в первый раз).
Х Гудрич

9

Я использую Visual Studio 2013. Я сталкивался с этой проблемой 2 раза:

  1. В первый раз я запускал Visual Studio без прав администратора. Итак, я закрыл VS и запустил его, используя опцию « Запуск от имени администратора ». Это решило мою проблему.

  2. Во второй раз я перезагружал VS много раз, каждый раз проверяя, запущен ли он как администратор. Также я много раз перестраивал решение. Но, несмотря на это, я получал ошибку. После этого я удалил соответствующий файл из целевого местоположения (файл, который уже присутствовал, может быть из предыдущей сборки в том месте, куда он пытается скопировать), и пересобрал решение . После этого ошибка ушла и все прошло гладко!



7

Это снова подняло голову в Visual Studio 2017, в данном случае причиной является процесс Application Insights ServiceHub.DataWarehouseHost.exe.

В предупреждении потока MSB3026 обсуждается обходной путь : не удалось скопировать «obj \ Debug \ netcoreapp1.1 \ src.pdb» в «bin \ Debug \ netcoreapp1.1 \ src.pdb» , то есть добавить предварительную сборку событие в проекте, чтобы убить процесс каждый раз, когда проект построен. Цитирую по этой ссылке:

  • Щелкните правой кнопкой мыши свойства на проекте
  • Выберите недвижимость
  • События сборки
  • Командная строка события перед сборкой
taskkill /IM ServiceHub.DataWarehouseHost.exe /F 2>nul 1>nul
Exit 0
  • Сохранить и построить

6

Может кто-нибудь знает, почему эта проблема?

Если посмотреть на ваш ответ о том, что вы решили свою проблему путем ручного копирования, я бы сказал, что код, над которым вы работали, был создан другим пользователем (с правами администратора), поэтому он был заблокирован для вас. Выполняя копию -? Вставьте, вы сделали свою СОБСТВЕННУЮ копию источника со всеми необходимыми вам правами доступа. Единственное, на что следует обратить внимание, это то, что в этом случае, если этот другой разработчик должен будет работать над вашей копией, он столкнется с той же самой проблемой, с которой вы столкнулись ранее.


6

Сначала перейдите к расположению файла. Затем щелкните правой кнопкой мыши папку файла -> Свойства -> Опция «Только для чтения» и примените к файлам и их подпапкам. Это решило мою проблему. Удачного кодирования!


3

Я повторно добавил все свои не-.NET зависимости / ссылки, и это помогло.


3

Я решил эту проблему сам. Проблема была в том, что я открыл решение в другом месте. После закрытия это работает


Я сделал это также. Всегда сначала проверяйте очевидные несложные вещи, мой пункт назначения находился на сетевом диске, так как я отлаживал на другой машине.
Саймон Ансворт

3

У меня была та же проблема, но перезапуск Visual Studio каждый раз не был для меня вариантом , так как проблема возникает иногда очень часто.

Я справился с этим, установив Unlocker ( пытается установить любую панель инструментов при установке, поэтому не забудьте снять галочку ), это приложение дает мне быстрый доступ к переименованию / удалению заблокированного ".xml" -файла . Я знаю, что это тоже только обходной путь, но для меня это было самое быстрое решение этой проблемы.


Спасибо за это. У меня была эта проблема в прошлом году, и я подумал, что это потому, что я переключаюсь между администратором, а не нет, но теперь я знаю, что это глупый критический процесс, связанный с антивирусом Panda (PSANHost.exe, которого нет в диспетчере задач), который заблокировал файлы.
yeejuto

3

Старый пост, но этот зомби бьет по VS 2017 (я не задумывался, почему это просто «некоторые» проекты). В данном случае это не пользовательские права , а процесс IIS Express все еще использует файлы.

Вы увидите значок на панели задач Значок IIS Express

  1. Правый клик
  2. Выход
  3. Вы должны быть в состоянии rebuildбез этого раздражающего сообщения «Отказано в доступе».

Это также, почему «перезапуск Visual Studio» решит проблему. Это останавливает IIS Express.

Hth ...


2

Я создал эту проблему, когда добавил новый проект установки в решение, а затем добавил файлы непосредственно из папки / bin / release основного проекта приложения в папку с файлами приложения проекта установки. Управление исходным кодом проекта установки постоянно блокировало меня от завершения сборки основного проекта приложения.

Решение: создайте отдельную папку дампа вне любого из проектов, которая будет содержать все файлы, которые будут включены в установку, и добавьте их оттуда. Это боль, потому что теперь я должен помнить, чтобы скопировать все файлы для каждого нового установочного пакета. Я мог бы посмотреть, смогу ли я что-нибудь сделать с действиями после сборки нашей автоматической сборки, чтобы сделать процесс более плавным.


2

Если вы копируете какие-либо файлы в решение, убедитесь, что они не находятся в режиме только для чтения. Щелкните правой кнопкой мыши по файлу и снимите флажок атрибута, решил мою проблему.


2

У меня была та же ошибка, но я использую контроль версий Perforce . Вот как я это исправил.

  1. Закрытый клиент Perforce P4V
  2. Перезапущен Visual Studio 2010 (может не быть необходимым)
  3. Перестроен проект, который удался
  4. Чувствовал себя исключительно счастливым и чувствующим отвращение одновременно

1
У меня такая же настройка, но я не смог добраться до шагов 3 и 4 :(
user3260977

2

У меня тоже была такая же проблема. Я получил сообщения об ошибках, связанные с невозможностью копирования, поскольку доступ к пути запрещен. В моем случае все мои dll-файлы, xml-файлы и т. Д. Находятся в папке D: \ TFS \ Example \ Bin \ Debug.

Я щелкнул правой кнопкой мыши по папке Bin, нажал кнопку «Свойства» и увидел, что в разделе «Атрибуты» установлен флажок «Только для чтения».

Я снял флажок «Только чтение», щелкнул «Применить» и нажал кнопку «ОК» в появившемся всплывающем окне.

Я вернулся в Visual Studio и создал свое решение, которое давало мне сообщения об ошибках.

Вуаля .. На этот раз он успешно построен без ошибок.

Я не знаю, идеально ли это, но я сделал это, чтобы решить мою проблему.



2

Перейдите к пути к файлу, затем снимите флажок только для чтения этого файла.


1

Я знаю, что это старая ветка, но для тех, кто ищет ответы, как и я несколько минут назад, я рекомендую сначала перезагрузить компьютер. Это одно исправлено для меня. Раньше не мог даже вручную скопировать в папку.


1
помог мне тоже. 2020 банда
Витор Цеолин

1

Просто щелкните правой кнопкой мыши по вашему проекту MVC и выберите опцию очистки. У меня была похожая проблема, и очистка проекта перед перестройкой решила его для меня.


1

У меня была такая же проблема. Я исправил это, сняв флажок в свойствах только для чтения корневой папки.


Иногда решение так же просто и очевидно, как это. Вместо того, чтобы биться головой и работать над сложными и бесконечными процедурами, просто проверяйте такие простые возможности, и ваша жизнь станет намного проще. Я благодарен StackOverflow за предоставление нам такого огромного сообщества экспертов, которые могут предложить нам необходимую помощь в отчаянные моменты.
Чоудхури Саадман Махмид

1

У меня тоже была эта проблема. Вот как это решается

  • Исключить binпапку из проекта.
  • Закройте визуальную студию.
  • Очистка диска диска C.
  • Повторно открыть проект в визуальной студии.
  • А затем перестроить решение.
  • Запустить проект.

Этот процесс работает для меня.



1

Мне удалось решить эту проблему, удалив целевой файл, который жалуется (в вашем примере «Bin \ Debug \ test.Resources.xml»), из папки bin целевого веб-сайта и заново скомпилировать его. Это исправило для меня.


1

1) закрыть визуальное студийное решение

2) перейдите в командную строку -> запустить от имени администратора -> iisreset / stop

3) Перейдите в c -> Windows -> Microsoft.Net -> Framework64 -> v4.030319 -> Временные файлы Asp.NET -> Удалить все файлы и папки по этому пути.

4) Вернитесь в командную строку -> iisreset / start

5) Теперь откройте Visual Studio -> Запустите от имени администратора -> Очистите решение и постройте его (не перестраивайте .. Просто сборка сработала для меня)


0

Вы не должны изменять атрибут папки на не-только для чтения. Причина, по которой вы видите это сообщение об ошибке, заключается в том, что система контроля версий предполагает, что вы храните разные файлы только в папке bin, поскольку она зарезервирована для файлов, автоматически создаваемых .Net, и не хочет добавлять их в исходный код. контроль.

Я предлагаю вместо использования Environment.CurrectDirectory(которое, как я полагаю, вы используете в настоящее время), вы создаете папку с именем «MyProjectName» в адресе% appdata% и затем используете:

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


0

Так что я столкнулся с той же самой проблемой, причиной моей был общий доступ к папке для разработки, чтобы я мог использовать Mac в качестве хоста сборки для приложения IOS, использующего Xamarin. Проект работал на Mac, который стал владельцем библиотеки DLL, поэтому я не мог вносить изменения в эту библиотеку из других источников. Простая остановка приложения на Mac вернула мне право собственности, что снова позволило получить полный доступ. Я надеюсь, что это сделать с тех пор.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.