W zlokalizowanym programie zawierającym neutralny pod względem kultury plik XAML, niektóre neutralne ikony kultury i zlokalizowane ciągi, w jaki sposób można organizować te różne typy zasobów, aby mogły wszystkie można znaleźć? Niezależnie od tego, jaką próbę spróbuję, okazuje się, że jeden z moich typów zasobów jest niedostępny.Problemy z montażem głównym a problemami związanymi z montażem satelitów podczas pobierania zasobów XAML i RESX w języku C# .Net
Problem, który mam jest:
Plik MainWindow.xaml zawsze buduje w zespole satelitarną en-US. Jeśli UltimateResourceFallbackLocation jest ustawiony na MainAssembly, to nigdy nie odnajdzie BAML okna i otrzymam wyjątek w wywołaniu InitializeComponent(). Dlatego czuję się zmuszony ustawić UltimateResourceFallbackLocation na "Satellite".
Zasoby ikon neutralnych pod względem kultury zawarte w pliku Resources.resx zawsze są wbudowywane w główny zbiór EXE i nie można ich znaleźć, jeśli właściwość UltimateResourceFallbackLocation jest ustawiona na wartość Satelita. Wydaje się, że jest to całkowicie niezgodne z wymaganiami pliku MainWindow.xaml.
Po całkowitym usunięciu UICulture i NeutralResourcesLanguage - które wymuszają dane XAML i RESX na obu komponentach MainAssembly, moje ciągi specyficzne dla kultury nie działają.
Pytanie brzmi: co robię źle? Jak mam zbudować projekt, aby te trzy rodzaje zasobów były dostępne.
Edit (rozwiązanie działa, ale wydaje się źle):
udało mi się dostać moja kultura neutralny plik RESX, resources.resx, aby zbudować do zespołu Satellite przez powielenie go w całości, zmiana nazwy duplikaty Zasoby .en-US.resx i ustawienie Resources.resx na Build Action: None (w ten sposób Resources.resx służy tylko do generowania pliku Resources.Designer.cs, ale nie wstawia już danych do głównego zbioru EXE).
Program działa teraz we wszystkich trzech przypadkach (zlokalizowane ciągi, niepolecane dane z resx i niezamknięte dane z XAML), ponieważ wszystkie moje neutralne zasoby kultury znajdują się teraz w zespole en-US - ale duplikowanie zasobów Plik .resx do osiągnięcia tego wydaje się dość głupi.
Czy to głupie? Czy jest to mądrzejszy sposób na zrobienie tego?
Twoja odpowiedź była pomocna w znalezieniu rozwiązania podobnego problemu: http://www.mathewweaver.com/2013/11/internalgetsatelliteassembly-finding.html – mweaver
Cieszę się, że pomogłem :) – chridam