应用程序可以在我的计算机上运行,但不能在同事上运行-无法加载文件或程序集或其依赖项之一

本文关键字:运行 文件 加载 程序集 依赖 计算机 我的 但不能 应用程序 | 更新日期: 2023-09-27 18:24:13

我有一个wpf应用程序,它在我的计算机上运行得很好。

该应用程序在同事的计算机上打开,但当他单击其中一个按钮时,会出现异常。

是个例外

Could not load file or assembly 'ABC, Version=1.0.0.0, Culture=netural, PublicKeyToken=null' or one of its dependencies

我的申请有两个项目,ABCWPF&ABC图书馆。我有一个控制台应用程序,叫做ABC。

我复制了这个项目,并将输出类型更改为类库。我将所有文件夹名称从ABC重命名为ABCLibrary,以及下面的两个文件,

 ABC.csproj renamed to ABCLibrary.csproj
 ABC.user renamed to ABCLibrary.user

我还更新了ABCLibrary解决方案文件中的一行,如下所示。请注意,我没有更改GUID。我读到visual studio会自动更改GUID。

 Project("{Some GUID}") = "ABCLibrary", "ABCLibrary'ABCLibrary.csproj", "{Some GUID}"

在应用程序部分ABCLibrary的属性页中,程序集名称&默认名称空间都是ABC。

为什么我的同事不会在我的电脑上运行这个?

更新

我刚刚用了fuslogvw。查看给我同事问题(ABC)的程序集的日志文件,它说绑定结果操作成功完成,我看不到的问题

另一次更新

所以它在我其他同事的电脑上工作,所以它看起来就是这台电脑(它真正需要运行的电脑)。我确实注意到在windows资源管理器中有一些东西(可能什么都没有,但没有进展),该应用程序有一个图标,但在它不工作的计算机上,它有visual studio默认图标。

更新3

所以它在我的一些同事的电脑上工作,而另一些则不然。错误消息是否告诉我程序集ABC中有一个文件无法加载?如果是这样的话,我添加的唯一参考是每个用户每天使用的彭博参考,所以不确定发生了什么

应用程序可以在我的计算机上运行,但不能在同事上运行-无法加载文件或程序集或其依赖项之一

计算机无法加载程序集的原因可能有很多问题。一些原因可能包括:

  • 应用程序文件夹结构中不存在.DLL文件
  • .DLL文件应该在GAC中,但不是
  • .DLL文件的名称可能与预期名称不同
  • .DLL文件可能具有不同的签名,因此CLR拒绝加载它
  • DLL可以使用与调用库不兼容的.NET版本进行编译(即.NET 3.5调用.NET 4.5.2库)

我建议您使用程序集绑定日志查看器(Fusilogvw.exe)来查看计算机上发生的事情的详细信息:

  1. 以管理员身份打开命令提示符
  2. 在命令提示符中键入fuslogvw
  3. 单击"设置"
  4. 选中"记录绑定失败"或"记录所有绑定"的框

要了解有关如何调查绑定失败的更多信息,请参阅MSDN 上的Fusilogvw页面

您尝试过使用FusionLog吗?FusionLog将为您提供Loader在加载依赖项时尝试搜索的所有路径。看看这个关于如何打开融合日志的链接。