加载EPPlus 4.0.0.1时出错,但是nuget引用就在那里。

时间:2014-09-04 20:31:53

标签: visual-studio nuget

我不是100%确定这是否是NuGet问题或其他地方的配置问题。我正在尝试修改引用EPPlus 3.xx的项目中的一些代码,但是整个解决方案中的所有项目实际上都在其中一个项目(包含我们的实体的项目中)中,同事将其升级为使用4.0.0.1(其中是测试版)。以下是csproj文件的实际行。

//from the project where our entities our housed
C:\work\Dev\SourceCode\Compass.Data\packages.config(7):  <package id="EPPlus" version="4.0.0-beta2" targetFramework="net40" />
//from the project I am trying to debug (step through).
C:\work\Dev\SourceCode\Compass.Business\packages.config(7):  <package id="EPPlus" version="3.1.3.3" targetFramework="net45" />

发生的事情是我不断收到以下错误。

 System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileLoadException: Could not load file or assembly 'EPPlus, Version=4.0.0.1, Culture=neutral, PublicKeyToken=ea159fdaa78159a1' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

查看packages文件夹我看到以下内容。

C:\work\Packages\EPPlus.4.0.0-beta2\lib\net20

我认为问题是有一个net20文件夹,配置说targetFramework =&#34; net40&#34;但我甚至不确定。如果这是问题,我也不知道如何修复它。

希望有人可以解释发生了什么。

谢谢。

2 个答案:

答案 0 :(得分:0)

所以 - 虽然我真的没有回答为什么我确实有这个问题的答案,这可能有助于将来尝试调试的人。

经过一些测试后,我意识到当你没有连接调试器时,这种方法非常好。我遇到问题的唯一一次是我想要逐步完成代码。为了解决这个问题,我安装的版本正在寻找GAC。我不是百分之百确定为什么这样做但它确实解决了我的问题。

C:\WINDOWS\system32>cd C:\work\Packages\EPPlus.4.0.0-beta2\lib\net20

C:\work\Packages\EPPlus.4.0.0-beta2\lib\net20>gacutil /i EPPlus.dll
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.33440
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly successfully added to the cache

C:\work\Packages\EPPlus.4.0.0-beta2\lib\net20>gacutil /l epplus
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.33440
Copyright (c) Microsoft Corporation.  All rights reserved.

The Global Assembly Cache contains the following assemblies:
  epplus, Version=4.0.0.1, Culture=neutral, PublicKeyToken=ea159fdaa78159a1, processorArchitecture=MSIL

Number of items = 1

C:\work\Packages\EPPlus.4.0.0-beta2\lib\net20>

答案 1 :(得分:0)

就我而言,它发生在ASP.NET网站上。 我确实更新了EPPLus.dll引用,但是发布函数没有用新文件替换旧文件。 手动删除dll并再次发布