c# - Assembly Resolve递归成无限循环

标签 c#

我正在尝试使用 AssemblyResolve 方法加载嵌入式程序集。然而,其中一个似乎引用了自身,因此在尝试加载它时,它会再次调用 AssemblyResolve。

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
    using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(string.Format("AnalysisViewer.Embedded_DLLs.{0}.dll", new AssemblyName(args.Name).Name)))
    {
        if (stream == null)
            return null;
        byte[] assemblyData = new byte[stream.Length];
        stream.Read(assemblyData, 0, assemblyData.Length);
        return Assembly.Load(assemblyData);
    }

};

有办法解决这个问题吗?正在加载的 dll 是 DevExpress 的,所以我无法对其中的代码做任何事情,如果我将它作为标准 dll,它可以正常加载。

我可以恢复为随包分发此 dll,但如果可能的话,我们正在尝试进行单个文件拖放安装。

这是我得到的堆栈跟踪:

AnalysisViewer.exe!AnalysisViewer.App.OnStartup.AnonymousMethod__0(object sender, System.ResolveEventArgs args)
mscorlib.dll!System.AppDomain.OnAssemblyResolveEvent(System.Reflection.RuntimeAssembly assembly, string assemblyFullName)
[Native to Managed Transition]  
mscorlib.dll!System.AppDomain.OnAssemblyLoadEvent(System.Reflection.RuntimeAssembly LoadedAssembly)
[Native to Managed Transition]  
mscorlib.dll!System.Reflection.Assembly.Load(byte[] rawAssembly)
AnalysisViewer.exe!AnalysisViewer.App.OnStartup.AnonymousMethod__0(object sender, System.ResolveEventArgs args)

最佳答案

好的,这可能对某些人有用。看来问题是 DE dll 正在调用其他不可用的 dll。我以为我已经跟踪了所有必需的 dll,但似乎我错过了一些。一旦我包含了这些,它就会按预期进行处理。

但是,在失败的任何时候它都没有告诉我它试图找到什么 dll。这就是为什么它如此令人沮丧。

关于c# - Assembly Resolve递归成无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32245273/

相关文章:

c# - 在回传之间存储 GridViewRow 对象

c# - NLog 不写入事件日志 .NET Core 2.1

c# - 从 .NET 驱动程序连接到 Cassandra 2.0

c# - 具有枚举的 Wcf DataContract 类导致 "' 枚举值 '-1' 对类型无效“错误

c# - Appdomain 与流程的性能优势?

c# - 如何将Items添加到类类型的属性中

c# - 在 C# 中转换图像

c# - 在 ASP.NET 和 XDocument.Load 中获取文件路径

c# - 如何在 Viola-Jones 中编写 Parallel ForEach

c# - Process.Start() 无法打开 exe