相关疑难解决方法(0)

定位的程序集的清单定义与程序集引用不匹配

我试图在C#Windows窗体应用程序(Visual Studio 2005)中运行一些单元测试,我收到以下错误:

System.IO.FileLoadException:无法加载文件或程序集"Utility,Version = 1.2.0.200,Culture = neutral,PublicKeyToken = 764d581291d764f7"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)**

在x.Foo.FooGO()

在Foo.cs中的x.Foo.Foo2(String groupName_):第123行

在FooTests.cs中的x.Foo.UnitTests.FooTests.TestFoo():第98行**

System.IO.FileLoadException:无法加载文件或程序集'Utility,Version = 1.2.0.203,Culture = neutral,PublicKeyToken = 764d581291d764f7'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

我查看我的参考资料,我只参考Utility version 1.2.0.203(另一个是旧的).

关于我如何弄清楚试图引用这个旧版本的DLL文件的任何建议?

此外,我认为我的硬盘上甚至没有这个旧组件.有没有工具可以搜索这个旧的版本化程序集?

c# dependencies compiler-errors reference version

715
推荐指数
20
解决办法
93万
查看次数

DLL版本控制错误

我有一个偶尔会抛出以下错误的网站:

'/'应用程序中的服务器错误.

无法加载文件或程序集'ICSharpCode.SharpZipLib,Version = 0.85.3.365,Culture = neutral,PublicKeyToken = 1b03e6acf1164f73'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

现在我知道我确实依赖于这个DLL,但我的系统上有0.85.5版本.我已经从服务器系统地删除了每个旧版本的DLL,重新编译了所有内容并重新发布.但无论我做什么,似乎每次重新发布后,有人访问该网站的前一两次,他们都会收到此错误.然后刷新一次或两次后,错误消失,网站正常运行.

让我更奇怪的是,如果我查看引发错误的代码行:

URLRewriter.ProcessRewritingResult(status, excludedEnum, siteName, viewMode, relativePath);
Run Code Online (Sandbox Code Playgroud)

URLRewriter是来自第三方软件包的类(Kentico CMS - CMS.URLRewritingEngine.dll).我在该DLL上运行了Dependency Walker,并且在ICSharpCode.SharpZipLib上找不到任何依赖项.

任何想法如何解决这一问题?

编辑:在@ JeremyThompson的建议下,我运行了Process Monitor来捕获错误.这是一个屏幕转储,突出显示相关部分(出于隐私原因,一个文件夹名称被隐藏).您可以通过右键单击它来查看它的完整大小等...

在此输入图像描述

编辑:这是错误的负载跟踪.这有帮助吗?

===预绑定状态信息===

日志:用户= MY-SERVER-12 \管理员

日志:DisplayName = ICSharpCode.SharpZipLib,版本= 0.85.3.365,文化=中立,PublicKeyToken = 1b03e6acf1164f73(完全指定)

日志:Appbase = file:/// C:/ inetpub/wwwroot/MySite /

日志:初始PrivatePath = C:\ inetpub\wwwroot\MySite\bin

调用程序集:CMS.WebAnalytics,Version = 6.0.4377.2467,Culture = neutral,PublicKeyToken = 834b12a258f213f9.

===

日志:此绑定在默认加载上下文中启动.

日志:使用应用程序配置文件:C:\ inetpub\wwwroot\MySite\web.config

日志:使用主机配置文件:C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config

日志:使用C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config中的计算机配置文件.

日志:政策后参考:ICSharpCode.SharpZipLib,Version = 0.85.3.365,Culture = neutral,PublicKeyToken = 1b03e6acf1164f73

日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/9760eb69/275bb3db/ICSharpCode.SharpZipLib.DLL.

日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary …

c# asp.net iis dll sharpziplib

15
推荐指数
2
解决办法
1万
查看次数

签署应用程序时出现System.IO.FileLoadException

我有一个遵循MVVM模式的WPF应用程序.我们最近签署了应用程序,现在我在启动时获得了很多第一次机会异常.我已将问题追溯到以下问题:

在任何视图中,如果我在初始化视图时在应用程序中引用另一个命名空间,我会收到错误:

"Could not load file or assembly 'MyApplication, Version=3.0.5917.24348, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)":"MyApplication, Version=3.0.5917.24348, Culture=neutral, PublicKeyToken=xxxxxxxxxxx"
Run Code Online (Sandbox Code Playgroud)

它总是在寻找一个比我实际运行的版本落后1的版本.

如果我从视图中删除对其他命名空间的引用,InitializeComponent()则不会抛出错误

视图:

<UserControl x:Class="MyApplication.View.DiagnosticsView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:convert="clr-namespace:MyApplication.Converters"  <!--Causes error-->
             xmlns:behave="clr-namespace:MyApplication.Behaviors" <!--Causes error-->
             xmlns:controls="clr-namespace:MyApplication.UserControls"  <!--Causes error-->
Run Code Online (Sandbox Code Playgroud)

如果我删除这些引用,并将我的转换器和行为移动到另一个DLL,然后通过DLL引用它们没有问题.错误消失了.此外,如果我没有签署该应用程序,我不会得到错误.我真的不想在不同的DLL中引用这些东西,看起来这应该可以正常工作.当所有视图都被创建时,它也会花费大约30秒来抛出所有这些错误,所以我的性能受到了冲击.我不知道为什么应用程序试图加载自己,以及为什么它试图加载自己的旧版本.无论我构建多少次,错误始终是1版本.

Fusion日志:

*** Assembly Binder Log Entry  (3/17/2016 @ 10:30:11 AM) ***

The operation failed.
Bind result: hr = 0x80131040. No description available.

Assembly manager …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm

12
推荐指数
1
解决办法
763
查看次数

流行的开源库和引用冲突

我们在所有(许多)内部应用程序中使用log4net.我们通常会执行相当于xcopy部署的操作.为方便开发人员,我们将log4net源编译为一个核心库.

现在又回来咬我们了.其他开源库(如Topshelf)引用log4net.还有一些(例如NServiceBus)将log4net合并到它们的程序集中.通常版本不同.

这是一个普遍的问题; 特定的库只是例子.

有几个类似的问题:

在各种解决方案(GAC,assemblyBinding,bindingRedirect等)中,未来可能会给我们带来最小的痛苦?我们可以修改我们的核心库; 我们无法做任何会破坏现场部署版本的事情.更新我们所有的项目参考将是痛苦的,所以我们只想这样做一次.

更新: Topshelf的当前版本抽象了日志记录,因此这不再是该框架的问题.

c# dll gac reference

9
推荐指数
1
解决办法
645
查看次数

.Net应用程序与水晶报告无法在共享主机中工作

我有一个使用水晶报告的MVC应用程序.我使用以下代码下载报告,

 ReportDocument rd = new ReportDocument();
 rd.Load(Path.Combine(Server.MapPath("~/Reports/" + Session["rpt"])));
 rd.SetDataSource(Session["result"]);
 Response.Buffer = false;
 Response.ClearContent();
 Response.ClearHeaders();
 //Excel
 Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.Excel);
 stream.Seek(0, SeekOrigin.Begin);
 return File(stream, "application/vnd.ms-excel", "Cheque.xls");
Run Code Online (Sandbox Code Playgroud)

报告下载在localhost中工作正常.但是当我在Godaddy的共享主机中托管这个应用程序时,给出以下屏幕 在此输入图像描述

.net c# asp.net asp.net-mvc crystal-reports

4
推荐指数
1
解决办法
695
查看次数