5

我试图将我的企业库从 4.0.0.0 升级到 5.0.5.0

我知道安全的方法是使用 NuGet。

我使用它,但得到这个错误:

创建缓存配置的配置节处理程序时出错:无法加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Caching,版本=5.0.505.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

Configuration Error




Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 




Parser Error Message: An error occurred creating the configuration section handler for cachingConfiguration: Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)




Source Error: 








Line 8:      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
Line 9:      <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null" />
Line 10:     <section name="cachingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Caching.Configuration.CacheManagerSettings, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null" />
Line 11:     <section name="instrumentationConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Common.Instrumentation.Configuration.InstrumentationConfigurationSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null" />
Line 12:     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />




Source File: D:\MaM\Server\ClientServices\Dev\ClientService 1.5\Conduit.Mam.ClientService.Service\web.config    Line: 10 




Assembly Load Trace: The following information can be helpful to determine why the assembly 'Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null' could not be loaded.








=== Pre-bind state information ===
LOG: User = CONDUIT-IL\elad.bendavid
LOG: DisplayName = Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///D:/MaM/Server/ClientServices/Dev/ClientService 1.5/Conduit.Mam.ClientService.Service/
LOG: Initial PrivatePath = D:\MaM\Server\ClientServices\Dev\ClientService 1.5\Conduit.Mam.ClientService.Service\bin
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: D:\MaM\Server\ClientServices\Dev\ClientService 1.5\Conduit.Mam.ClientService.Service\web.config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/fb9f9038/ea6afb52/Microsoft.Practices.EnterpriseLibrary.Caching.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/fb9f9038/ea6afb52/Microsoft.Practices.EnterpriseLibrary.Caching/Microsoft.Practices.EnterpriseLibrary.Caching.DLL.
LOG: Attempting download of new URL file:///D:/MaM/Server/ClientServices/Dev/ClientService 1.5/Conduit.Mam.ClientService.Service/bin/Microsoft.Practices.EnterpriseLibrary.Caching.DLL.
WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

我的 web.config:

我试图用 NuGet 看看,什么 dll 依赖于什么 dll。

我验证并且所有具有正确版本的 dll 都被引用(由 NuGet 安装)

我尝试了 DependenciesWallker,但不明白缺少什么。

4

3 回答 3

4

您需要使用签署程序集的实际公钥。只是把 NULL 会给你一个不匹配和加载失败。

于 2013-02-27T00:41:39.293 回答
1

我也遇到了这个异常。原来 web.config 中的 configSections 部分引用了 4.0 框架。将部分更改为此为我解决了它:

<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
于 2013-06-18T13:00:47.793 回答
0

请再次将 ADO.NET 实体模型文件添加到项目中。不要删除现有的。您只需在项目中再创建一个 .edmx 文件。它会将新的 5.0 版本 DLL 文件引用到项目中,并将代码也添加到配置文件中。添加文件后,您可以从项目中删除该文件。它仅用于将新创建的引用添加到项目中。试试这个它会工作....

于 2013-02-26T14:09:38.473 回答