应用程序可以在我的计算机上运行,但不能在同事上运行-无法加载文件或程序集或其依赖项之一
本文关键字:运行 文件 加载 程序集 依赖 计算机 我的 但不能 应用程序 | 更新日期: 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)来查看计算机上发生的事情的详细信息:
- 以管理员身份打开命令提示符
- 在命令提示符中键入
fuslogvw
- 单击"设置"
- 选中"记录绑定失败"或"记录所有绑定"的框
要了解有关如何调查绑定失败的更多信息,请参阅MSDN 上的Fusilogvw页面
您尝试过使用FusionLog吗?FusionLog将为您提供Loader在加载依赖项时尝试搜索的所有路径。看看这个关于如何打开融合日志的链接。