题
我有一个完整的 dll 目录,需要向 GAC 注册。我想避免显式注册每个文件 - 但 gacutil 似乎没有“注册目录”选项。有人有快速/简单的解决方案吗?
解决方案
GACUTIL 不注册 DLL——不是“COM”意义上的。与 COM 不同,GACUTIL 将文件复制到 %SYSTEMROOT%\ assembly 下的不透明目录,这就是它们运行的位置。要求 GACUTIL“注册文件夹”是没有意义的(并不是说您也可以使用 RegSvr32 来做到这一点)。
您可以使用批处理 FOR 命令,例如:
FOR %a IN (C:\MyFolderWithAssemblies\*.dll) DO GACUTIL /i %a
如果将其放入批处理文件中,则必须将 %a 替换为 %%a
其他提示
以下是您将放入批处理文件中的脚本,以使用 Gacutil 注册当前目录中的所有文件。您不需要将其放入批处理文件中(您只需将其复制/粘贴到命令提示符即可)即可执行此操作。
FOR %1 IN (*) DO Gacutil /i %1
编辑:呸,抱歉我迟到了。我发帖的时候没看到之前的帖子。
使用
gacutil /il YourPathTo_A_TextFile.txt
如果您的 dll 位于多个不同的文件夹中,请进行切换。否则就跟着 for ... in
欧元提到的循环。
该文本文件应包含应安装的程序集路径列表(每行一个路径)。这些路径也可以是整个系统中的不同文件夹。以管理员身份运行命令行!
以下是 YourPathTo_A_TextFile.txt 的示例:
C: ... Microsoft.practices.enterPriselibrary.common.dll C: ... Microsoft.Practices.enterPriselibrary.configuration.design.hostadapter.dll.dll c: ...microsoft.practices.practices.enterpriselpriselibrary.configurary.configurary.configuration.design.design。design。design。 HostAdapterV5.dll C:...Microsoft.Practices.EnterpriseLibrary.Configuration.DesignTime.dll C:...Microsoft.Practices.EnterpriseLibrary.Configuration.EnvironmentalOverrides.dll C:...Microsoft.Practices.EnterpriseLibrary.Data .dll