把自定义组件加入GAC怎么看不到?

最后一只恐龙 2009-01-18 09:39:24
(1)创建了一个自定义组件,通过“添加引用/浏览”方式加入ASP.NET项目,测试已经通过。
(2)编译为Release方式,使用了.snk签名。
(3)建立一个安装项目,在安装项目中添加了GAC目录,然后主输出选择了这个目标,编译为Release。
(4)运行编译出的安装文件,安装成功,C:\Windows\Assembly目录下也看到了安装后的文件。
(5)新建一个ASP.NET项目,在工具箱的选项卡中点击右键,选择“选择项”,在.Net Framework Components却找不到这个组件。

问题:找不到可能的原因是什么?不至于加入GAC后还要用浏览的方式添加引用吧?
...全文
249 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
最后一只恐龙 2009-02-03
  • 打赏
  • 举报
回复
自己顶一下,据MSDN说可以使用安装的方法加入GAC的,但总不成功
最后一只恐龙 2009-01-20
  • 打赏
  • 举报
回复
除了gacutil命令,使用安装程序没有办法注册到GAC吗?
最后一只恐龙 2009-01-18
  • 打赏
  • 举报
回复
哦,我注册过ocx,知道这个步骤。
不过看那些资料都说是创建安装文件,加入到GAC就可以了,应该不需要注册也可以吧。要不还要GAC干什么?
wuyq11 2009-01-18
  • 打赏
  • 举报
回复
要注册
注册dll 或者ocx 利用regsvr32命令
取消注册用regsvr32 /u
注册后不出现注册成功用参数 /s
参考
最后一只恐龙 2009-01-18
  • 打赏
  • 举报
回复
还需要注册?如何注册?
再就是如果在客户那里只安装运行程序,是不是也要注册?
GTX280 2009-01-18
  • 打赏
  • 举报
回复
先注册,然后把这个Dll拖入VS的控件工具箱里
wangping_li 2009-01-18
  • 打赏
  • 举报
回复
除了系统默认放置在GAC中的Assembly如System.Windows.Forms以外,我们也可以添加自己的Assembly:
1)创建一个strong-name的Assembly,例如ToolbarComponent.dll
2)运行gacutil -i ToolbarComponent.dll,把这个Assembly添加到GAC
3)在程序中动态装载:
System.Reflection.Assembly ass=Assembly.Load("ToolbarComponent, Version=1.0.934.20434, Culture=neutral, PublicKeyToken=65f45658c8d4927f");
MessageBox.Show("Is the assembly loaded from GAC? "+ass.GlobalAssemblyCache);
在上面的程序中,ToolbarComponent就是从GAC装载而不是从程序的运行目录下的dll文件中装载,程序目录下不需要放置ToolbarComponent.dll程序也能正常运行。另外,Assembly.Load()中的参数可以通过"gacutil -l"查到。

另外,上面提到了GAC中的Assembly必须是strong-name的。创建strong-name的Assembly的步骤大致如下:
a) 在命令行运行“sn -k keyPair.snk”创建一个密钥文件。这里的sn.exe也是.NET附带的一个工具。
b) 在VS.NET里面修改“AssemblyInfo.cs”文件:
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("..\\..\\keyPair.snk")]
c) 编译项目,就能得到一个strong-name的Assembly。

MSDN中有一些对GAC的介绍,您可以参考:
1)《Assembly Cache Viewer (Shfusion.dll)》
2)《Global Assembly Cache》

.NET Framework中附带了一些和GAC有关的工具,其中包括:
1)Gacutil.exe,一个命令行的工具,用于在GAC中浏览、添加、删除Assembly
2)Ngen.exe,也是一个命令行的工具,用于在GAC中创建Native Image
3)mscorcfg.msc,一个MMC终端,可以图形化完成Gacutil.exe的主要功能。
wangping_li 2009-01-18
  • 打赏
  • 举报
回复
试试:
csc /out:Test.dll /t:library Test.cs /r:System.Web.dll /r:System.Configuration.dll
无论您是一个好奇的用户,喜欢分开看看是什么让应用程序发挥作用,还是 .NET 开发人员对查找特定信息感兴趣,您都可以使用 ILSpy 来分析使用 .NET Framework 设计的软件产品,仔细检查每个组件,并找出最初组装它的用途。当然大眼仔也发布的有另外两款 .NET 反编译工具:dnSpy 中文版和 Red Gate .NET Reflector 中文版,如果你感兴趣也可以下载尝试。 .NET 反编译工具 ILSpy 中文版.NET 反编译工具 ILSpy 中文版 尽管有许多类似的工具可供使用,但 ILSpy 非常易于使用以及免费和开源。它不需要任何安装,这意味着它可以保存到您的便携式应用程序集合中,复制到 USB 闪存驱动器,并且可以在任何PC上使用而无需设置来浏览和检查 .NET 程序集。 使用此工具仔细查看.NET程序集 主应用程序窗口具有清晰的布局,分为两个主窗格:用于浏览 .NET 程序集树以及仔细查看任何选定项目。它可以检查 DLL,EXE 和 WINMD 文件(Windows 元数据)。可以从 GAC 加载数据,也可以打开 Nuget 包。 ILSpy 能够使用 C# 在 C#,IL 和 IL 中呈现代码。对于 C#,您可以选择 C#1.0/VS .NET 到 C#7.2/VS 2017。例如,您可以查看资源和引用,查看表以及将信息提取到文件。 使用 C# 在 C#,IL 和 IL 中呈现代码 由于该程序仅用于查看目的,因此无法进行文件修改。另一方面,您可以在查找类型,成员,方法,字段,属性,事件,常量或元数据标记时利用搜索功能。 可以配置多个反编译器设置,例如使用调试符号中的变量名称,删除无死区和副作用的代码,或者在反编译后扩展成员定义。此外,您可以自定义字体并允许多个实例。 考虑到所有方面,IlSpy 尽可能简单地反编译 .NET 程序集,看看是什么让软件变得简单。由于它是开源的,开发人员可以随意修改和使用其代码。

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧