首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么导致.net程序在System32或SysWOW64中查找文件?

是什么导致.net程序在System32或SysWOW64中查找文件?
EN

Stack Overflow用户
提问于 2013-11-11 08:44:18
回答 1查看 883关注 0票数 1

我的代码依赖于通常安装在系统文件夹中的第三方dll。当我运行一些引用这个dll的代码时,它可以很好地工作,因为它可以从System32或SysWOW64中获取它,这取决于进程的位版本。但是,只有当dll位于bin文件夹中时,它才能使用其他代码,如果不是,则抛出未找到的异常。

是什么原因导致.net程序分别在System32或SysWOW64中查找文件?

EN

回答 1

Stack Overflow用户

发布于 2013-11-11 10:20:20

“第三方DLL”是模糊的,但如果它们是非托管DLL,则符合要求。通常由程序中的DllImport指令引用。CLR要求Windows加载DLL,它需要找到DLL,并且只在几个地方查找文件。存储EXE的目录是第一个,下一个是Windows系统目录,接下来是PATH环境变量列出的目录。因为搜索总是包括Windows系统目录,所以它往往被ab/用来存储那些DLL。

如果DLL是.NET程序集,那么这将不起作用,CLR将不会查看操作系统目录或文件的路径目录。它首先在GAC中查找,即存储EXE next的目录。如果在<probing>文件中使用app.exe.config元素,则可以选择在EXE目录的子目录中查找。所以这可能是你的案子的原因。

始终将DLL存储在与EXE相同的目录中,这样就避免了很多麻烦。Windows系统目录不是一个好地方,DLL地狱是一个非常不愉快的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19902106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档