小编fl0*_*chi的帖子

XAML MSBuild 任务 XamlMarkupCompilePass1 在并行 MSBuild 中失败并抛出错误访问被拒绝

我们有几个包含 XAML UI 和 XAML 工作流文件的项目。由于我们启用了 MSBuild 的并行执行,使用标志 /m 构建,我们不时在 MSBuild 任务XamlMarkupCompilePass1 中遇到异常

##[error]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)

这只是一个例子,它有时也会发生在 NuGet 包上,而不仅仅是 .NET 框架程序集。

我们的设置是什么:我们有构建服务器,并且在每个服务器上至少有 2 个构建代理。

我们已经尝试了什么:

  1. 关闭构建代理以使每个服务器只有一个,仍然使用 /m 运行 MSBuild --> 因访问被拒绝而失败
  2. 在没有 /m 的情况下运行 msbuild --> 成功,但由于构建时间过长而不是解决方案
  3. 尝试对 MSBuild 使用隐藏标志,重试访问被拒绝MSBUILDALWAYSRETRY --> 这仅用于复制 MSBuild 任务,而不用于 XAML msbuild 任务

问题:有没有办法以某种方式影响 …

msbuild xaml access-denied

8
推荐指数
0
解决办法
214
查看次数

PackageReference 不将 dll 复制到使用者(测试)项目输出,其中 ExcludeAssets =“runtime”且 PrivateAssets =“none”

这里简单设置:

  • 项目A - .NET 4.7.2框架库项目
    • 封装参考SeriLog 2.9.0
      • 排除资产=“运行时”,
      • PrivateAssets=“none”,这是可选的,因为默认情况下它应该复制 DLL(设置=“运行时”)
  • TestProject B - .NET 4.7.2框架单元测试项目
    • 项目 A 添加为 ProjectReference
    • SeriLog DLL 和所有依赖项应复制到此处

输出: SeriLog DLL不会复制到ProjectA的输出文件夹,也不会复制到TestProject B从我的角度来看, TestProjectB应该包含 SeriLog.dll。我错过了什么吗?或者还有其他选择可以实现这一目标吗?

备注: 据我从PackageReference 格式规范中理解,我正确使用了属性。

ExcludeAssets属性控制已定义该属性的项目的资产PrivateAssets控制使用项目 A 的项目的流量。

c# msbuild nuget packagereference

2
推荐指数
1
解决办法
5645
查看次数

标签 统计

msbuild ×2

access-denied ×1

c# ×1

nuget ×1

packagereference ×1

xaml ×1