我正在尝试将.NET程序集导入Delphi以创建" _TLB.pas"文件,但我收到一个错误:
导致此错误的原因是什么?
.NET程序集是否未使用正确的程序集属性构建?
XE4可以导入的.NET版本(4.6.1)是否有限制?
下面显示的.NET程序集是使用.NET 4.6.1上的VS 2012创建的。
使用Delphi XE4,按照以下步骤操作:
选择装配时,会发生错误。
构建.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)]
答案 0 :(得分:1)
通过Visual Studio的Tlbexp.exe
工具运行程序集以生成.tlb
文件,然后将该文件导入Delphi。
否则,请尝试使用导入程序的“导入.NET程序集”选项,而不是“导入类型库”选项。