Udostępnij za pośrednictwem


Porady: dostęp do zasobów w satelickich bibliotekach DLL

Dodatki Visual Studio zostały zaniechane w programie Visual Studio 2013.Dodatki należy uaktualniać do pakietu rozszerzenia VSPackage.Aby uzyskać więcej informacji na temat uaktualniania, zobacz Często zadawane pytania: konwertowanie dodatków na rozszerzenia pakietu VSPackage.

Po utworzeniu satelity DLL i dodaniu do niego zasobów (ikony, mapy bitowe, ciąg zasobów i tak dalej), te zasoby teraz są dostępne dla twoich dodatków i innych projektów automatyzacji.Poniższa procedura demonstruje, jak to zrobić.

[!UWAGA]

Polecenia menu i okien dialogowych mogą różnić się od tych opisanych w Pomocy, w zależności od ustawień aktywnych lub wydania.Procedury te zostały opracowane z ogólnych ustawień projektowych active.Aby zmienić swoje ustawienia, wybierz Importuj i eksportujustawienia w menu Narzędzia.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Uzyskiwanie dostępu do zasobów satelitarnej biblioteki DLL

  1. Otwórz Visual Studio i załaduj istniejący projekt dodatku albo utwórz nowy.

  2. Dodaj poniższy przykład kodu, skompiluj i uruchom.

Przykład

Ten ogólny algorytm Visual Studio używa w celu wyszukania towarzyszącej biblioteki DLL.Możesz użyć tego kodu, aby upewnić się, że stowarzyszona biblioteka DLL jest poprawnie zbudowana, we właściwym miejscu i ma nazwę zasobu, której oczekujesz.

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());
    }
}

Kompilowanie kodu

Aby wykorzystać ten przykład, należy utworzyć Visual C# konsoli aplikacji, dodać ten kod zamiast funkcji Main() i ustawić zmienną ścieżki do ścieżki zestawu dodatków (nie ścieżka do biblioteki DLL satelity).Po uruchomieniu zobaczysz wszystkie zasoby dostępne w towarzyszącej bibliotece DLL.

Zobacz też

Zadania

Wskazówki: tworzenie zarządzanych satelickich bibliotek DLL