将.NET程序集导入Delphi失败

时间:2017-04-27 00:02:40

标签: .net delphi .net-assembly delphi-xe4 tlb

我正在尝试将.NET程序集导入Delphi以创建" _TLB.pas"文件,但我收到一个错误:

Screen shot of error

导致此错误的原因是什么?

.NET程序集是否未使用正确的程序集属性构建?

XE4可以导入的.NET版本(4.6.1)是否有限制?

下面显示的.NET程序集是使用.NET 4.6.1上的VS 2012创建的。

使用Delphi XE4,按照以下步骤操作:

  • 组件 - >导入组件 - >导入类型库
  • 点击“添加'
  • 浏览到.NET程序集。

选择装配时,会发生错误。

构建.NET程序集后,我成功地将它放入GAC(gacutil),在程序集(regasm)中注册它,并将其作为组件添加到COM +应用程序中。

我尝试使用.tlb创建regasm并导入,但会出现同样的错误。

ObjectCache.cs:

using System;
using System.EnterpriseServices;
using System.Runtime.InteropServices;

namespace TestObjectCache
{
    [Guid("7B1FEFFD-1569-404F-B7EB-6AAB903B8779")]
    [ComVisible(true)]
    public interface IObjectCache
    {
        Boolean GetTrue();
    }

    [Guid("80C986C4-6B1F-4E3C-9B5E-13943DD1E1FD")]
    [ComVisible(true)]
    [ProgId("ProgId.ObjectCache")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public class ObjectCache:ServicedComponent, IObjectCache
    {
        public ObjectCache()
        {
        }
        public Boolean GetTrue()
        {
            return true;
        }
    }
}

的AssemblyInfo.cs:

[assembly: ApplicationActivation(ActivationOption.Server)]
[assembly: ApplicationName("Object Cache")]
[assembly: Description("Caches commonly used objects")]
[assembly: ApplicationAccessControl(false)]

1 个答案:

答案 0 :(得分:1)

通过Visual Studio的Tlbexp.exe工具运行程序集以生成.tlb文件,然后将该文件导入Delphi。

否则,请尝试使用导入程序的“导入.NET程序集”选项,而不是“导入类型库”选项。