日期:2014-05-18  浏览次数:21196 次

通过gacutil在gac中加入assembly后,如何在项目中引用?
大家好,我通过gactuil   /i   将被调用的assembly加入到GAC中后,需要将引用加入到主调方程序中。但我在VS   2005中右击主调方项目,选择添加引用,在对话框的各个标签页中都找不到通过gacutil加入的assembly。这样以来,主调程序就编译失败。
为了在编译时让编译器找到加入到GAC中的assembly,我现在的做法是让被调方的工程与调用方的工程在同一个解决方案中,然后在调用方的工程中指明引用了被调方的工程。这样在编译时才能通过。
但一定要让被调方项目和主调方项目在同一解决方案中吗?请教各位平时是怎么解决的?非常感谢!


------解决方案--------------------
一定要让被调方项目和主调方项目在同一解决方案中吗?当然不要了。
按照通常的添加引用的方法找到要引用的DLL并加入引用,然后点击该文件的引用属性,
找到“复制本地”(默认值为true),改为 "false "即可,这样就可以引用加入到GAC的
程序集了。事实上你只要注意一下工程里面引用的那些Framework系统程序集(例如System.dll)
的属性就会明白了。

------解决方案--------------------
把assembly 放到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
------解决方案--------------------
嘿嘿,想要在这里面看到,要在注册表里改一下.
具体不记得了,网上有人写过怎么把log4net放进add reference列表里的....
------解决方案--------------------
.dll添加到GAC,在C:\WINDOWS\assembly下可以看到,但在添加引用里看不到
方案一:在“添加引用”对话框中显示程序集
即使已将程序集安装到全局程序集缓存 (GAC) 中,“添加引用”对话框也不会自动显示每个程序集。“添加引用”对话框基于路径并要求添加注册表项,该项指定要显示的程序集的位置。

在“添加引用”对话框中显示程序集 
添加以下注册表项之一,其中 <AssemblyLocation> 是要在“添加引用”对话框中显示的程序集目录,例如 C:\\MyAssemblies。

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

注意 
在 HKEY_LOCAL_MACHINE 配置单元下创建注册表项以后,所有用户都可以在“添加引用”对话框的指定位置看到程序集。在 HKEY_CURRENT_USER 配置单元下创建注册表项只会影响当前用户的设置。
 

重新启动 Visual Studio。 
 

方案二:可以把你的DLL复制到.NET Framework目录(%WINDIR%\Microsoft.NET\Framework\v1.x.yyyy)中,这样的话.可以达到你的目的. 但是,MS建议我们不应该将自己的assembly拷贝到Framework目录中。一个更好的方法就是把它们放在一个单独的目录中,然后给Windows Registry添加一个key,告诉VS.NET在哪里可以找到这些assembly。除了核心的Framework assembly外,VS.NET也可以显示在以下这些Registry key中列出的目录中的任何assembly:HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\AssemblyFolders
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1\AssemblyFolders
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\7.1\AssemblyFolders