从packages.config 迁移到PackageReferences 导致无法加载文件或程序集“...”或其依赖项之一。访问被拒绝

Kos*_*tek 11 .net msbuild nuget azure-devops packagereference

将我们的项目升级到 PackageReferences 后,我在构建服务器(本地 AzureDevOps 代理)上面临以下问题

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Xaml.targets(193,5): 
Error XC1000: XC1020: Build error occurred in the XAML MSBuild task: 
'Could not load file or assembly 'file:///C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\Facades\System.Threading.ThreadPool.dll'
 or one of its dependencies. Access is denied.'"
Run Code Online (Sandbox Code Playgroud)

对于不同的 Dll,这是随机发生的(50% 的时间)。这些 dll 位于不同的目录中:Nuget 还原目录、参考程序集或任何其他代码 dll。

在服务器上,我们使用的是 VS 2017。

现在,当我将项目迁移到 PackageReferences 时,这开始发生。在此之前,我们从未遇到过拒绝访问的任何问题。这是具有相同构建基础结构的完全相同的代码库。

我试图做的:

  • 我试图检查进程监视器,但那里没有“拒绝访问”条目。我可以看到它被正确读取
  • 为了安全起见,我在本地机器上安装了代理,看看这是否不是构建机器的问题,它也确实发生在那里
  • 当我们使用 MSBuild 或 Visual Studio 在本地构建时不会发生这种情况

任何想法,将不胜感激。至少要指出解决的方向。

[更新]

我们实际上有 3 天没有在服务器上发生问题,现在它又回来了。

在使用 msbuild(PS 脚本)在本地构建时,我们还“设法”获得了一次。从该本地构建和下一个(紧接着触发的传递)的外观来看,我们设法看到 nuget 正在下载在前一个(失败的)构建中成功下载的包。我们没有观察到连续传递构建的行为。除非清理,否则 Nuget 不会每次都下载新包。

[Update2] Nuget 恢复步骤和构建步骤的调试日志文件。

驱动器

谢谢

Dan*_*ter 0

我建议在构建代理上运行Procmon 。这将为您提供在此期间所有文件系统和注册表活动的全面审核。因此,在代理上启动它,在它们上进行一些构建以重现问题,然后暂停 procmon 并查看日志。按进程、文件或路径进行筛选,以缩小问题范围。这应该会给你一个关于正在发生的事情的更清晰的答案,并且答案要么会自己出现,要么从这里很容易弄清楚。