C# tlbimp.exe/COM互操作生成:VS2017中的不同结果

C# tlbimp.exe/COM互操作生成:VS2017中的不同结果,c#,visual-studio-2017,com-interop,tlbimp,C#,Visual Studio 2017,Com Interop,Tlbimp,过去,我一直在使用VS2015为COM对象生成互操作包装器。COM对象正在进行开发,因此有时接口会更改,我必须重新生成互操作包装器。到目前为止没有问题。 但是自从我升级到VS2017之后,我注意到互操作包装器的代码已经改变了。使我的项目无法编译 具体地说,区别似乎在于,在VS2015中,我将获得属性,但在VS2017中,我获得了一对get和set方法 我可以用像这样的东西 string dummy=comObject.a属性 如果使用VS2015生成的COM包装。但它必须改变为 string d

过去,我一直在使用VS2015为COM对象生成互操作包装器。COM对象正在进行开发,因此有时接口会更改,我必须重新生成互操作包装器。到目前为止没有问题。 但是自从我升级到VS2017之后,我注意到互操作包装器的代码已经改变了。使我的项目无法编译

具体地说,区别似乎在于,在VS2015中,我将获得属性,但在VS2017中,我获得了一对
get
set
方法

我可以用像这样的东西

string dummy=comObject.a属性

如果使用VS2015生成的COM包装。但它必须改变为

string dummy=comObject.get_AProperty()

而是在使用VS2017生成的COM包装时

从两个版本中反编译两个包装,我可以看到它们的定义如下:

VS2015

[TypeLibType(4176)]
  [Guid("XXXXXXX")]
  [ComImport]
  public interface Iv6ComFrame
  {
  //snip
    [DispId(232)]
    DesignList FaceList { [DispId(232), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [return: MarshalAs(UnmanagedType.Interface)] get; }
  //snip
  }
2017年

  [Guid("XXXXXXXXX")]
  [TypeLibType(TypeLibTypeFlags.FHidden | TypeLibTypeFlags.FDual | TypeLibTypeFlags.FDispatchable)]
  [ComImport]
  public interface Iv6ComFrame
  {
    //snip
    [DispId(228)]
    [SpecialName]
    [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
    [return: MarshalAs(UnmanagedType.Interface)]
    DesignList get_FaceList();
    //snip
  }
有没有办法让VS2017以旧的方式生成互操作包装器


谢谢

您可以尝试tlbimp的旧版本,直到找到好的版本: