gpt4 book ai didi

c# - postsharp 中的 AssemblyLoadException,引用 DLL 的参数有问题吗?

转载 作者:太空狗 更新时间:2023-10-29 20:15:11 26 4
gpt4 key购买 nike

我刚开始使用 postsharp/AOP。我想为 C# 制作一些工具来跟踪我为某个软件编写的一些插件的使用情况。

我正在尝试使用 OnMethodBoundaryAspect 类来记录调用方法时某些参数的值。这些参数是在外部 DLL 中引用的类型。

当我将我的属性添加到方法时,项目无法构建,出现以下错误

错误 2 未处理的异常(2.0.5.1204,64 位,CLR 2.0,版本):PostSharp.CodeModel.AssemblyLoadException:加载程序集时出错“C:\Program Files\Autodesk\Revit Structure 2011\Program\RevitAPI.dll “:无法加载文件或程序集‘revitapi,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null’或其依赖项之一。不支持操作。 (HRESULT 异常:0x80131515)

REvitAPI.dll 是其中包含类型的文件。我还测试了仅将属性添加到项目但未将其应用于任何方法,这也会导致错误。所以它似乎与方法参数类型本身无关,而仅仅是这个 DLL 的存在。

有没有人以前遇到过这个问题,或者任何人都可以指出正确的方向,告诉我从哪里获得更多关于这个的信息?

最佳答案

这是 C++ 依赖项的已知问题。

原因是 RevitAPI.dll 不是纯 MSIL,因此无法由 native (更快)主机加载。

解决方法是将此程序集标记为“已忽略”。您可以通过编辑 csproj 并添加:

<PropertyGroup>
<PostSharpProperties>IgnoredAssemblies=RevitAPI</PostSharpProperties>
</PropertyGroup>

如果这不起作用(因为 PostSharp 无法忽略程序集),您必须强制 PostSharp 使用托管(较慢的)主机:

<PropertyGroup>
<PostSharpHost>Managed</PostSharpHost>
</PropertyGroup>

关于c# - postsharp 中的 AssemblyLoadException,引用 DLL 的参数有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2954746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com