11

将我们的项目升级到 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.'"

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

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

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

我试图做的:

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

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

[更新]

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

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

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

gdrive

谢谢

4

1 回答 1

0

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

于 2020-12-18T14:27:26.407 回答