Chociaż można dynamicznie ładować bibliotekę DLL zgodnie z sugestią, dobrze jest użyć referencji, tak jak to się stało. W rzeczywistości zalecałbym używanie odwołania, chyba że miałoby się szczególne wymagania do dynamicznego ładowania zestawu zasobów.
Aby uzyskać dostęp do zasobów, musisz wykonać kilka czynności.
W zespole zasobów należy upewnić się, że zasoby są publiczne. Domyślnie zasoby są ustawione na wewnętrzne, co oznacza, że nie zobaczysz zasobów w aplikacji WinForm. Kliknij dwukrotnie na Właściwości \ Resources.resx, aby otworzyć widok zasobów. Na górnym pasku narzędzi pojawi się etykieta "Modyfikator dostępu" obok rozwijanej listy rozwijanej. Zmień wybór na publiczny.
Konieczne będzie odniesienie do zespołu z aplikacji formularzy. Oświadczyłeś, że już to zrobiłeś. Wystarczy zauważyć, że lepszym sposobem na to jest stworzenie rozwiązania, które zawiera oba projekty. Następnie w formularzu aplikacji wybierz Dodaj odwołanie. Kliknij kartę Projekty u góry. Kliknij dwukrotnie nazwę projektu biblioteki zasobów. Działa to lepiej niż bezpośrednie odwoływanie się do biblioteki DLL debugowania, ponieważ oznacza to, że jeśli zmienisz kompilację wydania i kompilację debugowania w aplikacji formularzy, automatycznie zbuduje ona pasującą wersję wydania/debugowania zespołu zasobów.
Po dodaniu odniesienia można po prostu odwołać się do typu z biblioteki DLL zasobów, np.
ResourceDLLNamespace.Properties.Resource.ResourceName
Tylko uwaga, trzeba mieć świadomość typu starć nazwy, jeśli używasz tej samej przestrzeni nazw dla swojej aplikacji form i DLL zasobów. W tej sytuacji zarówno twoja aplikacja formularzy będzie miała dostęp do własnej klasy Properties.Resources, jak i biblioteki DLL zasobu. Można zrobić dwie rzeczy, aby uniknąć w ten sposób:
- użyć innej przestrzeni nazw między dwoma zespołami
- W zespole zasobów nie obejmują domyślnego słownika zasobu Własności \ resources.resx. Usuń go i ręcznie dodaj nowy zasób, tj. Dodaj nowy element i wybierz "Plik zasobów". Powinieneś znaleźć, że nie będziesz mógł dodać nowego słownika zasobów do folderu Właściwości - dodaj go do katalogu głównego lub do innego folderu, jak tego potrzebujesz.Spowoduje to automatyczne nadanie mu innej nazwy, ponieważ znajduje się w innym folderze. Nadal możesz jednak chcieć uniknąć używania nazwy pliku zasobów "Zasoby", jak gdybyś posiadał wszystkie odpowiednie przestrzenie nazw w zakresie za pomocą instrukcji, otrzymasz ten sam problem, że kompilator nie będzie wiedział, z której wersji Zasobów korzystać.
-Donovan
Nazwa klasy resources.resx w Resources.resx.vb jest My.Resources. Z jaką nazwą mam się odwoływać? Me.rm = Nowy menedżer zasobów ResourceManager (("MyClassLibrary.Resources"), montaż) Czy to prawda? –
Nie jestem pewien, ale wydaje się prawdopodobny. Chociaż sugerowałbym użycie odpowiedzi Donovana, ponieważ brzmi to tak, jakby to było bardziej odpowiednie dla ciebie –