【发布时间】:2020-02-11 05:01:53
【问题描述】:
将我们的项目升级到 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 不会每次都下载新包。
[更新2] Nuget 还原步骤和构建步骤的调试日志文件。
谢谢
中号
【问题讨论】:
-
你的角色怎么样?您的帐户是管理员之一吗?
-
是的。当我构建旧版本的源代码(没有包引用)时,它 100% 的时间都可以正常工作。此外,当在本地尝试时,它也是使用我的帐户安装的,所以也是管理员。
-
好的。但还是觉得这个问题很牵强。服务器中的 VS 版本是否与您使用的本地版本相同?如果不是,请确保它们相同。另外,您介意分享完成的构建管道日志吗?也许可以从中找到一些东西。
-
服务器和我们本地开发环境的版本都是 2017 年的。我们将尝试尽快将其更新到 vs19 只是还不能这样做。我会看到有关构建日志的信息。应该可以分享。
-
也请尝试右键单击C:\Program Files (x86)\Reference Assemblies 文件夹->properties-> 添加用户“Everyone”然后检查。之后为其分配完全控制权。如果我修改此文件权限,我只会重现错误消息。但不确定它是否符合你的要求
标签: .net msbuild azure-devops nuget packagereference