Подтвердить что ты не робот

Ошибка MSB3027: не удалось скопировать "C:\pagefile.sys" в "bin\roslyn\pagefile.sys". Превышено число повторных попыток 10. Не удалось

Я последовательно получаю эту ошибку с VS 2013:

Не удалось скопировать "C:\pagefile.sys" в "bin\roslyn\pagefile.sys". Превышено число повторных попыток 10. Не удалось. Невозможно скопировать файл "C:\pagefile.sys" в "bin\roslyn\pagefile.sys". Процесс не может получить доступ к файлу

Пожалуйста, помогите мне.

4b9b3361

Ответ 1

Как указано в этом ответе от комментария Pramod, проблема связана с пакетом Microsoft.CodeDom.Providers.DotNetCompilerPlatform nuget, в частности, с версия 1.0.0 до 1.0.1.

Для меня, однако, переопределение с использованием Visual Studio вызвало дальнейшие ошибки сборки. Чтобы решить эту проблему, мне пришлось вручную редактировать файлы csproj и packages.config, удаляя все ссылки на Microsoft.Net.Compilers и Microsoft.CodeDom.Providers.DotNetCompilerPlatform.

В частности, это означало:

  • Удаление соответствующих разделов <Import Project="... для всех версий обеих библиотек (обычно к началу csproj)
  • Удаление разделов <Reference Include="... для обеих версий обеих библиотек
  • Удаление разделов <Error Condition="!Exists(... для обеих версий обеих библиотек из раздела EnsureNuGetPackageBuildImports
  • Удаление всех пакетов Microsoft.CodeDom.Providers.DotNetCompilerPlatform и Microsoft.Net.Compilers из файла packages.config.

Затем я смог управлять проектами пакетов nuget в VS и (по порядку):

  • Добавить Microsoft.Net.Compilers версия 1.2.2
  • Добавить Microsoft.CodeDom.Providers.DotNetCompilerPlatform версия 1.0.1

Это решило ошибку сборки pagefile и ошибку времени выполнения, которая побудила меня попробовать и обновить в первую очередь.

Ответ 2

Я удалил эти пакеты из диспетчера пакетов nuget, так как не использую их:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform

  • Microsoft.Net.Compilers

Теперь все работает.

Ответ 3

Я нашел другое решение этой ошибки. В моем случае я перемещался по проекту в моем решении (я поместил его в подпапку). Мои ссылки на пакеты (расположенные в %solutionfolder%/packages) в файле проекта были повреждены, и я исправил их вручную.

Однако есть два дополнения импорта, которые я забыл:

  <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />

Я сначала обновил первый из ..\packages к ..\..\packages (ленивый как я). Построение проекта после этого дало мне ошибку pagefile.sys.

Обновление второго импорта (то же самое изменение: ..\packages to ..\..\packages) решило это для меня.

Ответ 4

Удалите эти две строки из файла .csproj:

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />

Ответ 5

Не так много, но я бы предложил записать вашу проблему, используя SysInternals Process Monitor

После запуска procmon вы хотите записать (или трассировать, другими словами) свою проблему с помощью VS2013. После того, как вы закончите запись, вы захотите отфильтровать результаты по процессу (в вашем случае devenv.exe), поэтому нажмите Ctrl-T, чтобы открыть Дерево процессов, и найдите devenv.exe.

Выберите его, а затем нажмите кнопку "Включить субтитры". Закройте окно Дерево процессов и выберите Tools -> Count Occurrences в верхнем меню. Установите раскрывающийся список столбцов в поле "Результат" и нажмите кнопку "Счет". Результатом будет сбор результатов вместе с их соответствующими подсчетами. Обычно вы можете получить представление о том, что происходит, глядя на эти результаты. Например, если вы видите много результатов с участием ACCESS DENIED или FILE LOCKED WITH ONLY READERS, то, скорее всего, ваша проблема связана с разрешениями.

Ответ 6

Использование шагов Clean Solution/Rebuild Solution решило эту проблему для меня.