错误 MSB3027:无法将 "C:\pagefile.sys" 复制到 "bin\roslyn\pagefile.sys"。超过重试次数 10。失败
Error MSB3027: Could not copy "C:\pagefile.sys" to "bin\roslyn\pagefile.sys". Exceeded retry count of 10. Failed
我一直在使用 VS 2013 时遇到此错误:
Could not copy "C:\pagefile.sys" to "bin\roslyn\pagefile.sys".
Exceeded retry count of 10. Failed. Unable to copy file
"C:\pagefile.sys" to "bin\roslyn\pagefile.sys". The process cannot
access the file
请帮帮我。
没什么好说的,但我建议使用 SysInternals Process Monitor
记录您的问题
procmon
运行 后,您想记录(或跟踪,换句话说)您与 VS2013
的问题。完成记录后,您将希望按进程过滤结果(在您的情况下,devenv.exe
),因此按 Ctrl-T
打开进程树,然后找到 devenv.exe
。
Select 它,然后单击 "Include Subtree" 按钮。从顶部菜单关闭进程树 window 和 select Tools -> Count Occurrences
。将 Column 下拉框设置为 'Result' 并按下 Count 按钮。输出将是一组结果及其各自的计数。通过查看这些结果,您通常可以很好地了解发生了什么。例如,如果您看到很多结果涉及 ACCESS DENIED
或 FILE LOCKED WITH ONLY READERS
,那么您的问题很可能与权限有关。
如 中所述,问题源于 Microsoft.CodeDom.Providers.DotNetCompilerPlatform nuget 包,特别是从版本 1.0.0 到 1.0.1.
然而,对我来说,使用 Visual Studio 降级会导致进一步的构建错误。为了解决这个问题,我不得不手动编辑我的 csproj 和 packages.config 文件,删除对 Microsoft.Net.Compilers 和 Microsoft.CodeDom.Providers.DotNetCompilerPlatform[ 的所有引用=44=].
具体来说,这意味着:
- 删除两个库所有版本的相关
<Import Project="...
部分(通常在 csproj 的开头)
- 删除两个库的两个版本的
<Reference Include="...
部分
- 从
EnsureNuGetPackageBuildImports
目标部分中删除两个库的两个版本的 <Error Condition="!Exists(...
部分
- 正在从 packages.config.
中删除所有 Microsoft.CodeDom.Providers.DotNetCompilerPlatform
和 Microsoft.Net.Compilers
包
然后我能够在 VS 中管理项目 nuget 包并且(按顺序):
- 添加Microsoft.Net.Compilers版本1.2.2
- 添加Microsoft.CodeDom.Providers.DotNetCompilerPlatform版本1.0.1
这解决了页面文件构建错误,以及促使我首先尝试升级的运行时错误。
我找到了解决此错误的不同方法。
在我的例子中,我一直在我的解决方案中移动一个项目(我把它放在一个子文件夹中)。我对项目文件中的包(位于 %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
)为我解决了这个问题。
我从 nuget 包管理器中删除了这些包,因为我不使用它们:
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Microsoft.Net.Compilers
现在一切正常。
从 .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')" />
使用 Clean Solution/Rebuild 解决方案步骤为我解决了这个问题。
我在 .csproj 文件中删除了这一行
<Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
对我有用。
我用的是Visual Studio2019,不知道为什么我的项目突然出现这个错误
我一直在使用 VS 2013 时遇到此错误:
Could not copy "C:\pagefile.sys" to "bin\roslyn\pagefile.sys". Exceeded retry count of 10. Failed. Unable to copy file "C:\pagefile.sys" to "bin\roslyn\pagefile.sys". The process cannot access the file
请帮帮我。
没什么好说的,但我建议使用 SysInternals Process Monitor
记录您的问题procmon
运行 后,您想记录(或跟踪,换句话说)您与 VS2013
的问题。完成记录后,您将希望按进程过滤结果(在您的情况下,devenv.exe
),因此按 Ctrl-T
打开进程树,然后找到 devenv.exe
。
Select 它,然后单击 "Include Subtree" 按钮。从顶部菜单关闭进程树 window 和 select Tools -> Count Occurrences
。将 Column 下拉框设置为 'Result' 并按下 Count 按钮。输出将是一组结果及其各自的计数。通过查看这些结果,您通常可以很好地了解发生了什么。例如,如果您看到很多结果涉及 ACCESS DENIED
或 FILE LOCKED WITH ONLY READERS
,那么您的问题很可能与权限有关。
如
然而,对我来说,使用 Visual Studio 降级会导致进一步的构建错误。为了解决这个问题,我不得不手动编辑我的 csproj 和 packages.config 文件,删除对 Microsoft.Net.Compilers 和 Microsoft.CodeDom.Providers.DotNetCompilerPlatform[ 的所有引用=44=].
具体来说,这意味着:
- 删除两个库所有版本的相关
<Import Project="...
部分(通常在 csproj 的开头) - 删除两个库的两个版本的
<Reference Include="...
部分 - 从
EnsureNuGetPackageBuildImports
目标部分中删除两个库的两个版本的<Error Condition="!Exists(...
部分 - 正在从 packages.config. 中删除所有
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
和 Microsoft.Net.Compilers
包
然后我能够在 VS 中管理项目 nuget 包并且(按顺序):
- 添加Microsoft.Net.Compilers版本1.2.2
- 添加Microsoft.CodeDom.Providers.DotNetCompilerPlatform版本1.0.1
这解决了页面文件构建错误,以及促使我首先尝试升级的运行时错误。
我找到了解决此错误的不同方法。
在我的例子中,我一直在我的解决方案中移动一个项目(我把它放在一个子文件夹中)。我对项目文件中的包(位于 %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
)为我解决了这个问题。
我从 nuget 包管理器中删除了这些包,因为我不使用它们:
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Microsoft.Net.Compilers
现在一切正常。
从 .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')" />
使用 Clean Solution/Rebuild 解决方案步骤为我解决了这个问题。
我在 .csproj 文件中删除了这一行
<Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
对我有用。
我用的是Visual Studio2019,不知道为什么我的项目突然出现这个错误