- 前提环境:
- 解决:
- 引用属性“复制到本地”的理解、GAC
- GAC
- 如何将自己的dll注册到GAC中
项目没有报错,引用也没有报错,只有运行时才报的错。
运行提示没有找到CefSharp.Core.dll这个程序集
- 首先想到检查一下目标项目和引用dll是32位的还是63位,是不是位数不一致。
结果:并不是这个原因 - 将CefSharp.Core.dll的引用属性“复制本地”改为false,全局搜索并删除项目中多余的CefSharp.Core.dll。
结果:解决了。
- 引用属性“复制到本地”这个值仅表示编译后该库是否会被复制到项目目录下
- 引用的库在当前目录下找不到的话 则会加载GAC中的版本
- 第三方库务必放在解决方案目录内 而不要使用复制本地
如果这个库 nuget上有 果断使用nuget管理
全称是Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。举例而言,如果没有GAC,那么势必每个WinForm程序的目录下就都要从C:WINDOWSMicrosoft.NETFrameworkvX下面拷贝一份System.Windows.Forms.dll,这样显然不如都从GAC里面取用方便,也有利于Assembly的升级和版本控制。
GAC所在目录: C:WINDOWSassembly
在开发和测试中,最常用的工具就是GACUtil.exe。 在GAC中注册程序集跟COM注册差不多,但相对更容易:
1.把程序集添加到GAC中: GACUtil /i sample.dll (参数/i是安装的意思)
2.把程序集移出GAC GACUtil /u sample.dll (参数/u就移除的意思)
注意:不能将一个弱命名程序集安装到GAC中。
如果你试图把弱命名程序集加入到GAC中,会收到错误信息:”
Failure adding assembly to the cache: Attempt to install an assembly without a strong name”
例子:
C:Program FilesMicrosoft Visual Studio 8VC>gacutil -i F:mywebBalloonShopCl
assLibrary1binDebugClassLibrary1.dll



