我有一个我想在C#项目和Excel VBA中使用的DLL。我使用regasm.exe注册DLL并创建TLB。我现在能够在VBA中引用它。我的问题是,我需要我的C#应用程序仍然无法找到 DLL。我必须在每个C#应用程序的文件夹中添加DLL的副本或.config - 文件才能使用它们。我可以在COM下看到Visual Studio中的引用,但在尝试使用该引用时出错(Active-X相关的东西,如果它很重要,我可以查找它)。
所以我尝试使用gacutil.exe(首先使用regasm.exe取消注册)并在GAC中注册了我的DLL。现在我不需要副本或.config,我的C#应用程序再次运行。 Excel VBA仍然需要使用regasm.exe进行注册,但是我只能在使用gacutil.exe后才能添加引用。
这里我的问题:当你想将它用于C#apps和Excel VBA时,如何注册DLL?是否可以同时使用regasm和gacutil而没有任何问题?
答案 0 :(得分:2)
运行regasm
后,您可以使用gacutil /i
将程序集安装到GAC中。完成此操作后,使用“浏览”选项卡将对程序集的引用添加到.NET项目中。添加引用后,在项目中找到引用并查看该引用的属性。将“复制本地”更改为“错误”。
在运行时,您的.NET项目将在本地查找程序集,当它找不到它时,将检查GAC。假设您运行gacutil
命令,它将在那里找到它。
答案 1 :(得分:2)
一种稍微不同的方法是将您的C#库合并到Excel-DNA .xll加载项中。这允许您在没有注册或需要管理员权限的情况下使库可用于Excel中的VBA,并且相同的加载项可以包括工作表UDF函数,功能区自定义等。
可以在此处找到MikaelKatajamäki通过Excel-DNA将C#库暴露给Excel VBA的详细说明: http://mikejuniperhill.blogspot.com/2014/03/interfacing-c-and-vba-with-exceldna-no.html和 http://mikejuniperhill.blogspot.com/2014/03/interfacing-c-and-vba-with-exceldna_16.html