VBA代码可以实例化并使用.NET对象吗?我感兴趣的特定类是System.IO.Compression.GZipStream.
对于Info GAC是.NET全局程序集缓存
我们正在尝试编写几个应用程序。一个 ASP.NET 站点使用 .NET Assembly xxx.Elements.dll,它提供实用程序功能。
另一个是 Classic ASP 站点,也应该使用相同的 DLL 以使用相同的实用程序函数。(它将用于加密两个站点之间的数据)。
尽管进行了多次尝试和谷歌搜索,但我们无法使其正常工作。
我们有:
将 ComVisibility 应用到 Assembly.info 并确保有一个 Guid:
[assembly: ComVisible(true)]
[assembly: Guid("ab96fbc3-aa39-4fb6-8628-13778445e503")]
Run Code Online (Sandbox Code Playgroud)
我们通过确保我们的类型具有默认构造函数、ComVisible 和 Guid 来确保我们的类型在类型可见性上打勾。我们还创建了一个简单的测试方法:
namespace xxx.Elements
{
[GuidAttribute("D3BE2C7D-7550-4da1-8F61-6871E193242F")]
[ComVisible(true)]
public class UrlUtility : IUrlUtility
{
public UrlUtility()
{
}
public string Test()
{
return "HellO";
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用界面:
[GuidAttribute("D3BE2C7D-7550-4da1-8F61-6871E193242A")]
[ComVisible(true)]
public interface IUrlUtility
{
string Test();
}
Run Code Online (Sandbox Code Playgroud)
我们发现这真的很有用(虽然没有解析)在这里发布:警告 MSB3391:不包含任何可以为 COM 互操作取消注册的类型。
我们还在项目属性页中检查了 COM-Interop 的注册器。
这继续输出警告:
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(3341,9): warning MSB3214: "D:\dev\yyy\xxx.Elements\bin\Release\xxx.Elements.dll" does not contain any types …Run Code Online (Sandbox Code Playgroud)