未能加载的文件或程序集.怎么解决

未能加载的文件或程序集.怎么解决,第1张

1,在64位 *** 作系统上使用任何版本的MSBuild编译引用了仅32位组件的.Net 3.5的项目

2,使用64位MSBuild编译引用了仅32位组件的项目;

3,使用32位MSBuild编译引用了仅64位组件的项目。

要解决这个问题,可以在解决碰坦方案管理器中,将所有的库的目标平台全部设置为 AnyCPU就可以了。

如果需要最终执行平台是X86只需将最终的执行文件目标平台设置为x86:

这样即可正常编译。

程序最终运行的平台,是根据可执行文件的设置来的,因此库中设置为AnyCPU不会影响到最终程序的运行,运行依然是在x86之下。

但是如果引用的DLL有仅32位的,那这种方法就不行了,解决办法http://support.microsoft.com/kb/2028833,详见MSBuild 4.0 or Visual Studio 2010 may fail to compile a 32-bit application targeted for .Net Framework 3.5, 3.0 or 2.0 on x64 machine。

 详细解决步骤如下:

1、关闭所有Visual Studio;

2、以管理员的身份打开VS2010的命令提示窗口;

3、更改目录至"<system_drive>:\Program Files (x86)\Microsoft SDKs\Windows\v<x.xx>\bin\”下面;

4、输入该命令corflags /32bit+ ResGen.exe /斗州force,执行;

5、使用记事本打开<project_name>.csproj文件;

6、在PropertyGroup下添加<ResGenToolArchitecture>Managed32Bit</ResGenToolArchitecture>,保存,关闭退出。

现在在VS2010中重新打开原先的项目,编译通过,可以正确运行了!

步骤做完后就能运行的原因是,此时ResGen就是以32位模式运行了,而不是64位,因此便可以加载标记为仅32位的程序笑销桐集了。代价是——它就再也无法编译标记为仅64位模式的程序集了。

对于该问题,还有另一个解决办法,打开项目属性页面,选择应用程序选项卡,设置目标框架为.NET Framework 4 。(由于框架限制,这个没测试)

c# 未能加载文件或程序集

主要以下几种可能:

1.DLL文件名与加载时的DLL文件名不一致,

2.DLL文件根本不存在,即出现丢失情况,

3.加载DLL路径错误,即DLL文件存在,但加载路径不正确

4.程序集版本错误。我A.dll内部引用的b.dll是1.0版本,而实绩提供的b.dll是2.0的版本,所以在winfrom设计界面就报了这个找不到依赖项的错误。

5.主要原因是 引用的项目 .net 版本与启动首盯的框架不同。在我的项目中,原来是VS2008也就是.NET3.5的框架,后来升级为VS2010,但是还没有更改框架,有的程序升级后没问题,有的升级后者答和编译通过,一运行就提示“未能加载文件或程序集。。。。”,更改为对应VS版本的.NET4.0后就可以运行啦!

6.64位或32位平台的问题,默认选择举敬Any CPU,更改X86或X64看看;

参考:

http://blog.csdn.net/xtfnpgy/article/details/40430995


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8255260.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存