Я создал библиотеку библиотеки классов и завернул ее, но когда я использую ее в VBA (Excel), у нее нет методов. Все хорошо из другой программы .NET:tlb не генерирует методы
Это мой код:
namespace NeilLibrary
{
public interface INeilTest
{
string DoMethodReturn(string name);
string DoMethodOut(string name, out string name2, out bool isPrev);
}
[Guid("BA7CC0F2-9C07-4EF9-B799-18D317B7E293")]
[ComVisible(true)]
public class NeilTest
{
public NeilTest() { }
[ComVisible(true)]
public string DoMethodReturn(string name)
{
return "name: " + name;
}
[ComVisible(true)]
public string DoMethodOut(string name, out string name2, out bool isPrev)
{
name2 = "New Value";
isPrev = true;
return "Name: " + name;
}
} }
я построил его с COM включен в сборку, и я побежал следующую команду:
regasm.exe NeilLibrary.dll /tlb:neil.tlb
который работал хорошо. В Excel я импортировал tlb и он появляется в браузере объектов, поэтому он создан нормально, но методов нет. Интерфейс показан, хотя, с его методами, но это не очень полезно.
Может кто-нибудь помочь пожалуйста.
Я добавил конструктор no-arg, потому что я где-то читал кого-то с подобной проблемой, пришлось это сделать.
Вы пробовали [это] (http://stackoverflow.com/q/11570262/1188513) и [это] (http://stackoverflow.com/a/29783710/1188513)? –
Прочтите мой ответ на другое сообщение ..... http: //stackoverflow.com/questions/33923624/cant-add-a-reference-to-the-specified-file/33923711? Noredirect = 1 # comment55610787_33923711 –
У типов COM нет «конструкторов», поэтому вы не можете выставлять управляемый тип COM, если он имеет только конструктор с параметрами - на самом деле вы * можете *, но ваш COM-клиент не сможет его создать. ... и до того, как вы нажмете эту стену, вы также не можете выставлять общие типы для COM. =) –