将DLL拖放到windows server 2008.net 4.0中的GAC(“程序集”)
我正在尝试将一些代码部署到客户端计算机,在那里我不想安装MS windows SDK工具。这意味着你没有访问“gacutil”的权限。我还没有为我的代码创建安装程序。似乎这些可能是.NET4.0中仅有的两个选项 在过去,我只需启动、运行、键入“assembly”,然后拖放我的dll将DLL拖放到windows server 2008.net 4.0中的GAC(“程序集”),.net,.net-4.0,gac,.net,.net 4.0,Gac,我正在尝试将一些代码部署到客户端计算机,在那里我不想安装MS windows SDK工具。这意味着你没有访问“gacutil”的权限。我还没有为我的代码创建安装程序。似乎这些可能是.NET4.0中仅有的两个选项 在过去,我只需启动、运行、键入“assembly”,然后拖放我的dll 这不可能了吗?当我尝试这样做时,我没有收到任何错误消息,但是dll没有出现在“assembly”文件夹中。当我在我的开发机器上使用gacutil时,它可以正常工作,但dll仍然没有出现。在.net 4.0中,Micr
这不可能了吗?当我尝试这样做时,我没有收到任何错误消息,但是dll没有出现在“assembly”文件夹中。当我在我的开发机器上使用gacutil时,它可以正常工作,但dll仍然没有出现。在.net 4.0中,Microsoft删除了通过拖放将dll添加到程序集的功能 相反,您需要使用gacutil.exe,或者创建一个安装程序来执行此操作。微软实际上并不推荐使用gacutil,但我还是走了这条路 要在开发计算机上使用gacutil,请转到:
开始->程序->Microsoft Visual studio 2010->Visual studio工具->Visual studio命令提示符(2010)
然后使用这些命令分别卸载和重新安装。注意:我没有在卸载命令中包含.dll
。gacutil/u myDLL
gacutil/i“C:\Program Files\Custom\myDLL.dll”
要在非开发机器上使用Gacutil,必须将可执行文件和配置文件从开发机器复制到生产机器。看起来Gacutil有几个不同的版本。我在这里找到了为我工作的那个:C:\ProgramFiles(x86)\Microsoft SDK\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe
C:\ProgramFiles(x86)\Microsoft SDK\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe.config
将文件复制到此处或相应的.net文件夹C:\Windows\Microsoft.NET\Framework\v4.0.30319
然后使用这些命令分别卸载和重新安装“C:\Users\BHJeremy\Desktop\安装到.net 4.0\gacutil.exe中的Gac”/u“myDLL”
“C:\Windows\Microsoft.NET\Framework\v4.0.30319\gacutil.exe”/i“C:\Program Files\Custom\myDLL.dll”
如果您安装了必要的.NET
框架。前.Net 4.0
或.Net 3.5
,然后您可以将Gacutil.exe
从任何机器复制到新机器
1) 在新服务器中以管理员身份打开CMD。2) 遍历到复制Gacutil.exe的文件夹。对于eg-C:\程序文件(以我为例)。
3) 在cmd提示符中键入以下命令并安装。
C:\Program Files\gacutil.exe/I dllname
在可能的情况下,我需要复制gacutil.exe、gacutil.exe.config和gacutlrc.dll(从1033目录中)客户端计算机上没有
gacutil
实用程序,Windows SDK许可证禁止将其重新分发给客户。当您的客户不能、不会(而且确实不应该)下载300MB Windows SDK作为应用程序安装过程的一部分时
您(或您的安装程序)可以使用官方支持的API在全局程序集缓存中注册程序集。Microsoft的Windows Installer技术知道如何为您调用此API。您必须咨询您的MSI安装工具(例如WiX、InnoSetup),了解它们自己的语法,以了解如何指示您希望在全局程序集缓存中注册程序集
但是MSI和gacutil没有做什么特别的事情。它们只是调用您可以自己调用的相同API。有关如何通过代码注册程序集的文档,请参阅:
删除知识库文章之前的更多文档:
结构的字段定义如下:
- cbSize-以字节为单位的结构大小
- dwFlags-保留,必须为零
- guidScheme-添加引用的实体
- szIdentifier-标识安装程序集的应用程序的唯一字符串
- szNonCannonicalData-仅添加引用的实体可以理解的字符串。GAC仅存储此字符串
FUSION\u REFCOUNT\u MSI\u GUID
-程序集由使用Windows Installer安装的应用程序引用。szIdentifier字段设置为MSI,szNonCannonicalData设置为Windows Installer。此方案只能由Windows Installer本身使用。
FUSION\u REFCOUNT\u UNINSTALL\u SUBKEY\u GUID
-程序集由出现在添加/删除程序中的应用程序引用。szIdentifier字段是用于向添加/删除程序注册应用程序的令牌。
FUSION\u REFCOUNT\u FILEPATH\u GUID
-程序集由文件系统中的文件表示的应用程序引用。szIdentifier字段是此文件的路径。
FUSION_REFCOUNT_OPAQUE_STRING_GUID-程序集由仅由不透明字符串表示的应用程序引用。szIdentifier就是这个不透明的字符串。删除此引用时,GAC不会对不透明引用执行存在性检查
安装程序和gacutil的其他替代品是GUI工具,如或。或者,如果你喜欢PowerShell,你可以使用它,我是它的作者 您也可以使用命令提示符将文件复制到GAC。我使用以下批处理脚本复制DLL并重新启动IIS
copy /b/v/y "PathToAssembly\MyAssembly.dll" "C:\Windows\assembly\"
iisreset /noforce
pause
省去了使用或安装gacutil的需要请记住Fusion API是非托管的。的当前参考
copy /b/v/y "PathToAssembly\MyAssembly.dll" "C:\Windows\assembly\"
iisreset /noforce
pause