我创建了一个HttpModule,我将其添加到GAC中,然后在我的web.config中注册它。我使用Fody Costura来嵌入依赖项。我的bin文件夹中的输出只包含一个dll,一个.config和一个.pdb(因为所有依赖项都合并到该文件中。)我的问题是每当我从GAC加载模块时,它都无法找到嵌入依赖。我有以下观察:
<modules>
<add name="MyModule" type="MyNamespace.MyModule.Module, MyNamespace.MyModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7d22d90bda7ffgab, processorArchitecture=MSIL"/>
</modules>
&#13;
当我从GAC加载模块时,我的模块无法加载依赖项。我收到以下消息:
无法加载文件或程序集&#39; Newtonsoft.Json,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed&#39;或其中一个依赖项。系统找不到指定的文件。
我的模块加载如下:
{{1}}&#13;
我认为我的模块不知道依赖关系本身。有什么办法可以告诉我的模块从合并的dll加载依赖项吗?或者任何可以指出我正确方向的人?我在这里有点失落。谢谢!
答案 0 :(得分:2)
似乎问题与Newtonsoft.Json
本身有关。
这些问题表明,不同Newtonsoft.Json
版本的强名称存在问题:
Newtonsoft.Json.dll release incompatible versions with same strong name #615
Newtonsoft.Json.dll release incompatible versions with same strong name #1001
因此,如果GAC中已安装了一个版本,并且您尝试安装另一个版本,则无法安装。
具有相同强名称的程序集应该相同。
因此,您的应用程序无法在GAC中找到所需的Newtonsoft.Json
版本,因为它不存在。
如果您可以尝试避免使用GAC,它应该可以解决问题。