Freigeben über


Gewusst wie: Zugreifen auf Ressourcen in Satelliten-DLLs

Add-Ins für Visual Studio sind in Visual Studio 2013 veraltet. Sie müssen für Ihre Add-Ins ein Upgrade auf VSPackage-Erweiterungen durchführen. Weitere Informationen über das Durchführen eines Upgrades finden Sie unter FAQ: Konvertieren von Add-Ins in VSPackage-Erweiterungen.

Nachdem Sie eine Satelliten-DLL erstellt und ihr Ressourcen (Symbole, Bitmaps, Ressourcenzeichenfolgen usw.) hinzugefügt haben, sind diese Ressourcen für Ihre Add-Ins sowie andere Automatisierungsprojekte verfügbar. Die Vorgehensweise wird anhand der folgenden Schritte veranschaulicht.

Hinweis

Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen.Bei der Entwicklung dieser Verfahren war die Option "Allgemeine Entwicklungseinstellungen" aktiviert.Wählen Sie im Menü Extras die Option Einstellungen importieren und exportieren aus, um die Einstellungen zu ändern.Weitere Informationen finden Sie unter Anpassen der Entwicklungseinstellungen in Visual Studio.

Zugreifen auf Ressourcen in Satelliten-DLLs

  1. Öffnen Sie Visual Studio, und laden Sie entweder ein vorhandenes Add-In-Projekt, oder erstellen Sie ein neues.

  2. Fügen Sie das folgende Codebeispiel hinzu, kompilieren Sie es, und führen Sie es aus.

Beispiel

Visual Studio verwendet den folgenden allgemeinen Algorithmus, um eine Satelliten-DLL zu suchen. Mit diesem Code können Sie sicherstellen, dass die Satelliten-DLL ordnungsgemäß erstellt wird, sich an der richtigen Position befindet und den erwarteten Ressourcennamen aufweist.

static void Main(string[] args)
{
    string path = @"<some path here>";
    System.Reflection.Assembly asm =    
    System.Reflection.Assembly.LoadFrom(path);
    // For enhanced security, use the LoadFrom overload 
    // System.Reflection.Assembly.LoadFrom(path, securityInfo);
    // where securityInfo is an instance of an Evidence object.
    System.Reflection.Assembly assemblyForResources = 
    asm.GetSatelliteAssembly(System.Threading.
    Thread.CurrentThread.CurrentCulture);
    System.IO.Stream stream =    
    assemblyForResources.GetManifestResourceStream
    (assemblyForResources.GetManifestResourceNames()[0]);
    ResourceReader resReader = new ResourceReader(stream);
    foreach (System.Collections.DictionaryEntry entry in resReader)
    {
        System.Windows.Forms.MessageBox.Show(entry.Key.ToString());
    }
}

Kompilieren des Codes

Um dieses Beispiel zu verwenden, erstellen Sie eine Visual C#-Konsolenanwendung, fügen diesen Code anstelle der Main()-Funktion ein und legen die PATH-Variable auf den Pfad der Add-In-Assembly fest (und nicht auf den Pfad der Satelliten-DLL). Bei der Ausführung werden alle in der Satelliten-DLL verfügbaren Ressourcen angezeigt.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen von verwalteten Satelliten-DLLs