Разрешить ссылку.net tlb
Прямо сейчас я пишу.net DLL, которая должна использоваться в коде VBA (Excel, Access и т. Д.). Следующая настройка работает нормально:
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[ComVisible(true)]
[Guid("8079e4a4-1e4b-4788-92ba-9d5b017fa9be")] //Allocate your own GUID
public interface ICommunication
{
string TestProp { get; set; }
string Login();
string Disconnect();
}
[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
[Guid("19fd86e2-f1b9-478c-ba7a-bd76bdf19b85")] //Allocate your own GUID
[ProgId("TestDll.Communication")]
public class Communication : ICommunication
{
public string TestProp { get; set; }
public string Login()
{
// use of BouncyCastle here
return "logged in";
}
public string Disconnect()
{
// ...
return "disconnected";
}
}
Ссылаясь на сгенерированный файл tlb, я могу правильно использовать функцию "Отключить свойство aswell", однако вызов функции "Вход в систему" приводит к проблемам (окно сообщения "Файл не найден" в Excel), которые, я полагаю, связаны с использованием ссылочной BouncyCastle.
Sub Button1_Click()
Dim o: Set o = CreateObject("TestDll.Communication")
Dim value As String
value = o.Login()
MsgBox value
End Sub
Каков наилучший способ справиться со ссылками на другие сборки.net внутри com видимых библиотек? До сих пор я безуспешно пытался зарегистрировать надувной замок в GAC.
Спасибо:)
1 ответ
Это действительно было похоже на предложенный выше файл, который не может быть прочитан: В каждой сборке я помещаю.txt в каталог bin проекта, который читается во время выполнения. Используя dll в моем решении, файл мог быть найден, поскольку относительный путь был моим каталогом bin, однако, используя tlb, относительный корневой путь был папкой документов вошедшего в Windows пользователя.
Забавно, как я все время думал, что ошибка связана с тем, как я установил свою dll как видимую com:).