【问题标题】:Deserialization - assembly not found issue c#反序列化 - 未找到程序集问题 c#
【发布时间】:2017-07-09 07:52:55
【问题描述】:

我正在做汇编项目,外部程序是通过汇编程序执行的。 System.Environment.CurrentDirectory 程序集和Application.ExecutablePath 路径因外部应用程序不同而不同。 System.Environment.CurrentDirectory 是程序集路径。 Application.ExecutablePath 外部应用程序路径。 反序列化时会抛出异常

找不到程序集

因为 "Application.ExecutablePath " 没有我的 dll。 所以我想更改使用System.Environment.CurrentDirectory 路径进行反序列化。

【问题讨论】:

  • 我认为你应该这样做stackoverflow.com/questions/19398748/…
  • 在反序列化时,它会抛出异常程序集,因为外部应用程序“revit.exe”文件夹不包含我的 dll。但是当我将我的 dll 复制到该文件夹​​时,工作正常。
  • 根据该示例,您可以只对程序集的路径进行硬编码,并且它们会在不与您的 exe 位于同一文件夹中的情况下加载
  • 可能是安全异常。有内部异常吗?代码的完整异常将为您提供答案,您没有提供足够的信息。

标签: c# .net revit-api revit


【解决方案1】:

我建议在当前域上设置一个 AssemblyResolve 事件。 这样您就可以明确地确定您的 DLL 的位置,并在没有自动找到它们时加载它们。

Jeremy Tammik 在这里写道: http://thebuildingcoder.typepad.com/blog/2014/05/rvtva3c-assembly-resolver.html

唯一需要注意的是,您应该确保事件专门针对您的 DLL(而不是任何 DLL)——如果不适合您加载 DLL,则返回 null(我偶尔会遇到其他人的插件不能很好地实现这一点的场景,并且它搞砸了我的插件)。

【讨论】:

    猜你喜欢
    • 2018-09-13
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多