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
Otwórz Visual Studio i załaduj istniejący projekt dodatku albo utwórz nowy.
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.