无法解析对程序集"PostSharp"的依赖关系,因为它尚未预加载



我的项目结构

  • A.dll,它通过NuGet安装了PostSharp并使用它。
  • B.exe,它引用 A 并且不使用 PostSharp。

编辑:我创建了一个测试解决方案,看看我是否可以重现该问题,并且错误消失了,因此它似乎是原始项目中的其他一些构建时过程。我还不知道是什么。


我的问题

目前,这会导致 B 出现编译错误。

未知生成错误,"无法解析对程序集的依赖关系"PostSharp,版本=3.0.40.9,区域性=中性,公钥令牌=b13fd38b8f9c99d7",因为它尚未预加载。使用 ReflectionOnly API 时,必须通过 ReflectionOnlyAssemblyResolve 事件预加载或按需加载依赖程序集。

将 PostSharp 安装到 B 会导致新的警告。

模块"B.exe"不包含任何方面或其他转换。为了提高生成时性能,请考虑通过在项目中设置编译符号(也称为常量)"SkipPostSharp"来禁用此模块的 PostSharp,或设置 MSBuild 属性"SkipPostSharp=True"。

如果我在项目属性中禁用PostSharp,我现在会收到此错误。

#error:"PostSharp没有在构建过程中引入。如果 NuGet 刚刚还原了 PostSharp 包,则需要重新生成解决方案。

这来自RequiresPostSharp.cs,它安装在每个PostSharp项目中。


我的目标

我需要消除所有错误和警告。


我建议的解决方案

我想如果我能消除第一个错误和将 PostSharp 添加到 B 的需要,一切都会好起来的。我不知道如何解决它。


我的问题

  1. 正确/推荐的解决方案是不将PostSharp安装到B,并修复第一个错误吗?
  2. 如果是这样,我该怎么做?如果没有,我将如何找到正确的解决方案?

当项目 BWPF 应用程序时,可以重现所描述的生成错误。在这种情况下,问题将由 XAML 编译器引起 - 它尝试加载依赖项 (A) 引用的程序集,如果不成功,则会失败。

为了避免构建错误,您还需要将 PostSharp 引用添加到您的 B 项目中。当然,届时您将收到上述警告消息。

版本 3.1 开始,PostSharp 不再将 RequiresPostSharp.cs 文件添加到项目中,而是在 msbuild 脚本中执行验证。因此,您可以在项目 B 属性中安全地禁用 PostSharp。这样,您将避免错误和警告消息。

相关内容

最新更新