错误MSB3027:无法将“C:\ pagefile.sys”复制到“bin \ roslyn \ pagefile.sys”。超过重试次数10.失败

问题描述 投票:22回答:4

我一直在VS 2013中遇到此错误:

无法将“C:\ pagefile.sys”复制到“bin \ roslyn \ pagefile.sys”。超过重试次数10.失败。无法将文件“C:\ pagefile.sys”复制到“bin \ roslyn \ pagefile.sys”。该进程无法访问该文件

请帮我。

c# visual-studio visual-studio-2012 visual-studio-2013
4个回答
41
投票

this answer from Pramod's comment所示,问题源于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部分
  • 从packages.config中删除所有Microsoft.CodeDom.Providers.DotNetCompilerPlatformMicrosoft.Net.Compilers包。

然后我能够管理VS中的项目nuget包和(按顺序):

  • 添加Microsoft.Net.Compilers 1.2.2版
  • 添加Microsoft.CodeDom.Providers.DotNetCompilerPlatform版本1.0.1

这解决了页面文件构建错误和运行时错误,这促使我首先尝试升级。


9
投票

我从nuget包管理器中删除了这些包,因为我不使用它们:

  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  • Microsoft.Net.Compilers

现在一切正常。


4
投票

我找到了一个不同的解决方案来解决这个错误。在我的情况下,我一直在我的解决方案中移动一个项目(我把它放在一个子文件夹中)。我对项目文件中的包(位于%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..\..\packages)为我解决了这个问题。


0
投票

没什么可走的,但我建议用SysInternals Process Monitor记录你的问题

一旦你运行procmon,你想用VS2013记录(或跟踪,换句话说)你的问题。完成录制后,您需要按流程过滤结果(在您的情况下,devenv.exe),所以按Ctrl-T打开过程树,找到devenv.exe

选择它,然后单击“包括子树”按钮。关闭Process Tree窗口,然后从顶部菜单中选择Tools -> Count Occurrences。将Column下拉框设置为'Result',然后按Count按钮。输出将是结果的集合及其各自的计数。通过查看这些结果,您通常可以很好地了解正在发生的事情。例如,如果您看到很多涉及ACCESS DENIEDFILE LOCKED WITH ONLY READERS的结果,那么很可能您的问题与权限有关。

© www.soinside.com 2019 - 2024. All rights reserved.