无法从 GAC 加载程序集,但它从程序的文件夹加载

Can't load assembly from GAC but it loads from program's folder

我正在使用 .NET Framework 4.0、Entity Framework 6.1.3 和 Sqlite 1.0.96.0 开发 C# 应用程序。

我在 GAC 上安装了一个使用 SQLiteMyCompany.Data.Sqlite.Common 的程序集(System.Data.SQLite 也安装在 GAC 上)。

我有两个错误:

'Entity Framework used the default instance DbConfiguration before the type was detected' SQLiteConfiguration '. An instance of 'SQLiteConfiguration' should be set at the beginning of the application before using any feature or Entity Framework must be registered in the configuration file of the application. See http://go.microsoft.com/fwlink/?LinkId=260883 for more information. '

为了解决这个问题,我在 App.config 中添加了以下内容:

<entityFramework codeConfigurationType="MyCompany.Data.Sqlite.Common.SQLiteConfiguration, MyCompany.Data.Sqlite.Common">

但是,将此添加到 App.config 程序后,它不会从 GAC 加载它。

我必须将相同的 dll 复制到 EXEC 文件夹中才能加载它和 运行 程序。

我认为这不是版本号问题或dll格式错误,因为我在GAC中使用了相同的dll。

我也已将此添加到 App.config:

<dependentAssembly>
        <assemblyIdentity name="MyCompany.Data.Sqlite.Common" publicKeyToken="db937bc2d44ff139" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
      </dependentAssembly>

但我必须将 dll 复制到应用程序的文件夹中。

有什么想法吗?

从 GAC 加载程序集需要完全限定的程序集名称。例如;

<entityFramework codeConfigurationType="MyCompany.Data.Sqlite.Common.SQLiteConfiguration, MyCompany.Data.Sqlite.Common, Version=1.1.1.1, Culture=neutral, PublicKeyToken=ABCD1234567890">