由于未预加载,无法解决对程序集“PostSharp”的依赖关系。

6

我的项目结构

  • 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”或设置MSBuild属性“SkipPostSharp=True”来禁用此模块的PostSharp。

如果在项目属性中禁用PostSharp,则现在会出现以下错误。

#error:“在构建过程中未引入PostSharp。如果NuGet刚刚恢复了PostSharp包,则需要重新构建解决方案。”

这来自于每个PostSharp项目中安装的RequiresPostSharp.cs。


我的目标

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


我的建议解决方案

我认为,如果我可以消除第一个错误和添加PostSharp到B的需要,一切都会很好。但是我不知道如何修复它。


我的问题

  1. 正确/推荐的解决方案是不安装PostSharp到B,并修复第一个错误吗?
  2. 如果是这样,我该如何做?如果不是,我该如何处理正确的解决方案?
1个回答

10
描述的构建错误是在项目 BWPF应用程序 时才会出现。 在这种情况下,问题将由XAML编译器引起-它尝试加载由您的依赖项 (A) 引用的程序集,并在不成功时失败。
要避免构建错误,您需要将PostSharp引用添加到您的B项目中。当然,您会收到提到的警告消息。
从版本3.1开始,PostSharp不再向您的项目添加RequiresPostSharp.cs文件,并在msbuild脚本内部执行验证。 因此,您可以安全地在项目B属性中禁用PostSharp。 这样,您将避免错误和警告消息。

虽然已经过了几年,但这对我仍然有效。谢谢! - Falgantil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接