Warnung MSB3391: <DLL> enthält keine Arten, die registriert werden kann für COM-Interop

Habe ich eine einfache C# - DLL (das ist ein Teil von einem viel größeren Projekt) mit VS2005. Muss ich die DLL in Excel über VBA-code so, ich bin mit COM-Interop auf die Montage. Ich bin versuchen, um den build-Prozess generiert automatisch die notwendigen TLB-Datei, so dass ich nicht brauchen, um auf die Kommandozeile aus und verwenden Sie regasm nach jedem build.

Mein problem ist, dass, obwohl die DLL kompiliert und baut feines, generiert er nicht eine TLB-Datei. Stattdessen werden die Fehler in den Titel druckt in der Ausgabe-box.

Ich habe andere DLLs zu bauen TLB-Dateien, indem Sie auf der Projekt-Eigenschaften in VS2005 -> Erstellen -> Leistung -> Check "für COM-interop Registrieren". Auch ich habe [assembly: ComVisible(true)] in der AssemblyInfo.cs.

Hier ist die Zusammenfassung der Quelle für die problem-DLL und der DLL, es verweist, für eine Rückkehr Typ:

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)
        {
            ...
        }
    }
}

Hier ist eine Zusammenfassung der SymbolTable.dll. Es hat einen Rückgabetyp, dass ProblemLibrary verwendet.

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*/
    }
}
  • Warum müssen Sie die COM-interop? Ich sehe keine COM gibt. Willst du Zugriff auf die C# - Assembly via COM später?
  • Ja, ich muss mit dieser DLL in Excel VBA.
InformationsquelleAutor | 2009-05-12
Schreibe einen Kommentar