无法从GAC加载嵌入式依赖项

时间:2018-01-25 16:48:16

标签: dll ilmerge fody fody-costura

我创建了一个HttpModule,我将其添加到GAC中,然后在我的web.config中注册它。我使用Fody Costura来嵌入依赖项。我的bin文件夹中的输出只包含一个dll,一个.config和一个.pdb(因为所有依赖项都合并到该文件中。)我的问题是每当我从GAC加载模块时,它都无法找到嵌入依赖。我有以下观察:

  • 每当我的模块从/ bin文件夹加载时,一切正常。我注册模块如下:



<modules>
  <add name="MyModule" type="MyNamespace.MyModule.Module, MyNamespace.MyModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7d22d90bda7ffgab, processorArchitecture=MSIL"/>
</modules>
&#13;
&#13;
&#13;

  • 当我从GAC加载模块时,我的模块无法加载依赖项。我收到以下消息:

    无法加载文件或程序集&#39; Newtonsoft.Json,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed&#39;或其中一个依赖项。系统找不到指定的文件。

我的模块加载如下:

&#13;
&#13;
{{1}}
&#13;
&#13;
&#13;

我认为我的模块不知道依赖关系本身。有什么办法可以告诉我的模块从合并的dll加载依赖项吗?或者任何可以指出我正确方向的人?我在这里有点失落。谢谢!

1 个答案:

答案 0 :(得分:2)

似乎问题与Newtonsoft.Json本身有关。

这些问题表明,不同Newtonsoft.Json版本的强名称存在问题:

因此,如果GAC中已安装了一个版本,并且您尝试安装另一个版本,则无法安装。

  

具有相同强名称的程序集应该相同。

     

Strong-Named Assemblies | MSDN

因此,您的应用程序无法在GAC中找到所需的Newtonsoft.Json版本,因为它不存在。

如果您可以尝试避免使用GAC,它应该可以解决问题。