предупреждение MSB3391: <DLL> не содержит типов, которые могут быть не зарегистрированы для COM-взаимодействия

Я сделал простую 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*/
    }
}

Ответы на вопрос(3)

Ваш ответ на вопрос