C# Entity Framework 资源和程序集解析 (appdomain)

C# Entity Framework resources and assembly resolve (appdomain)

我遇到了一个问题,我似乎无法解释发生了什么。

如果我在我的 DLL(C#) 中使用 AppDomain.AssemblyResolve 事件并且我使用 Entity Framework,我发现它可能会以某种方式尝试加载以下资源文件:

EntityFramework.resources, Version=6.0.0.0, Culture=fr-FR, PublicKeyToken=b77a5c561934e089

及之后

EntityFramework.resources, Version=6.0.0.0, Culture=fr, PublicKeyToken=b77a5c561934e089

我不知道他们可以住在哪里,也不知道他们是否存在于某个地方。 我找不到任何讨论或 Microsoft 网站谈论那个。

可以肯定的是,如果我 return 在我的事件中将该资源设为 null,就像 Microsoft 关于 AssemblyResolve 事件的文档中的状态一样,一切正常,但问题是我希望能够不return null 因为有另一个 DLL(在 .NET 4 之前构建)由外部公司完成并在与我的 DLL 相同的应用程序中使用,它将尝试加载程序集资源文件并抛出异常,这使得应用程序崩溃。

出于这个原因,我正在尝试了解如何处理该特定情况并避免 returning null。

有人能解释一下为什么 Entity Framework 会尝试加载这些资源文件吗?是否有办法在不从 aassemblyresolve 中 returning null 的情况下处理这个问题?

我自己想出来了。

解决方法很简单。

当请求 EntityFramework.resources 时,只需 return "already" 从当前 AppDomain 加载 EntityFramework 实例,而不是使用 LoadFrom/Load/LoadFile 方法.

希望这对以后的人有所帮助。