Я создаю следующую библиотеку классов в C #:
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
//[Guid(<Generate GUID here>)]
public interface _None1
{
int retval { get; }
}
[ClassInterface(ClassInterfaceType.None)]
//[Guid(<Generate GUID here>)]
[ProgId("Lotr.Test")]
public class None : _None1
{
public int retval
{
get
{ return 1; }
}
}
Затем я компилирую его, используя опции «Register for COM Interop» и «Make Assembly COM-visible».
Когда я пытаюсь получить доступ к нему с помощью Excel 2007 VBA на моем компьютере, работает нормально. Однако, если я перенесу файлы .dll и .tlb на другую машину, а затем с помощью regasm зарегистрирую ее, регистрация пройдет нормально, я могу сослаться на это в Excel VBA через tlb, intellisense работает как часы, но пока во время выполнения VBA выдает следующую ошибку:
«Ошибка времени выполнения: -2147024894 (80070002)»
«Ошибка автоматизации: система не может найти указанный файл.»