Я сделал простую C # DLL (это часть гораздо большего проекта) с использованием VS2005. Мне нужно использовать DLL в Excel через код VBA, поэтому я использую COM Interop на сборке. Я пытаюсь заставить процесс сборки автоматически генерировать необходимый файл TLB , чтобы мне не нужно было переходить в командную строку и использовать regasm после каждой сборки.
Моя проблема в том, что, хотя DLL компилируется и собирается нормально, она не генерирует файл TLB. Вместо этого ошибка в заголовке выводится в поле вывода.
Я получил другие библиотеки DLL для создания файлов TLB, перейдя в свойства проекта в VS2005 -> Build -> Output -> Check "Зарегистрироваться для взаимодействия COM" . Также у меня есть [Assembly: ComVisible (true)] в AssemblyInfo.cs .
Вот краткая информация об источнике для проблемной DLL и DLL, на которую она ссылается для возвращаемого типа:
using System;
using System.IO;
using System.Runtime.InteropServices;
using SymbolTable;
namespace ProblemLibrary
{
public class Foo
{
public Foo(string filename)
{
...
}
// method to read a text file into a SymbolTable
public SymbolTable BuildDataSet(string[] selected)
{
...
}
}
}
Вот краткое изложение SymbolTable.dll. Он содержит тип возврата, который использует ProblemLibrary.
using System;
using System.Collections.Generic;
namespace SymbolTable
{
public class SymbolTable
{
readonly Dictionary<SymbolInfoStub, string> _symbols = new Dictionary<SymbolInfoStub, string>();
/*methods that interact with Dictionary snipped*/
}
}