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

Ken*_*rey 6 .net c# msbuild postsharp

我的项目结构

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

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


我的问题

目前这会导致B的编译错误.

未知的构建错误,'无法解析对程序集的依赖关系'PostSharp,Version = 3.0.40.9,Culture = neutral,PublicKeyToken = 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. 如果是这样,我该怎么做?如果没有,我将如何找到合适的解决方案?

Ale*_*exD 10

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

为避免构建错误,您还需要将PostSharp引用添加到B项目中.当然,您将收到所提到的警告信息.

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