2016-05-16 44 views
5

Moje Visual Studio 2015 rozwiązanie ma następujące projekty:MissingManifestResourceException Od PCL Kodeksu Assembly wywoływana z UWP

  • NET
  • montaż UWP
  • PCL Biblioteka Zespół
  • .NET Test jednostki
  • Jednostka testowa UWP App

PCL as sembly zawiera osadzoną tabelę zasobów ciągów (za pośrednictwem pliku RESX w projekcie) i prostą klasę, która pozwala dzwoniącym na pobranie ciągów z tabeli zasobów łańcuchowych. PCL został zaprojektowany w celu umożliwienia współdzielenia łańcuchów między zespołami .NET i UWP.

Po uruchomieniu biblioteki testowej .NET, testy jednostkowe wywołują zestaw .NET, który pobiera ciągi z zespołu PCL. Działa to zgodnie z oczekiwaniami.

Po uruchomieniu aplikacji testowej UWP, testy jednostkowe wywołują zestaw UWP, który pobiera ciągi z zespołu PCL. Nie powiedzie się to z następującym komunikatem wyjątku:

System.Resources.MissingManifestResourceException: Nie można załadować zasobów dla pliku zasobów [bla] w pakiecie [guid].

Próbowałem this solution, ale wezwanie do GetForViewIndependentUse() udało się COMException stwierdzając, że "ResourceMap Not Found".

Co się dzieje? Ten łańcuch wywołania działa dla stosu testowego jednostki .NET. Sprawdziłem, aby ustawić neutralny język na "Angielski" dla wszystkich złożeń. Jaki jest najlepszy sposób udostępniania tabeli ciągów między zespołem .NET a zespołem UWP?

+0

"w pakiecie" mówi, co poszło nie tak, zasoby są osadzone w zespole, a nie w pakiecie. Zasoby są robione bardzo różnie w UWP, są kompilowane w blob PRI i osadzone w pakiecie. Przekonanie ResourceManager do czytania z zespołu może być trudne, biorąc pod uwagę, że zestawy satelitarne również nie działają w UWP, nie ma prawdziwego pomysłu. –

Odpowiedz

5

Miałem do czynienia z tym samym "MissingManifestResourceException" od kilku ostatnich dni. Sprawdziłem również Microsoft Blog Post i ten MVP Post dotyczące Xamarin. Po zastosowaniu proponowanych rozwiązań dostałem ten sam błąd, co "Nie znaleziono zasobu".

Wreszcie postanowiłem wrócić do głównego problemu, a ja uważnie sprawdził opis błędu „MissingManifestResourceException” w MSDN, i mówi:

tą różnicą, że jest wyrzucane gdy główny zespół nie zawiera zasobów dla kultury neutralnej i brakuje odpowiedniego zestawu satelitów.

Źródło: https://msdn.microsoft.com/en-us/library/system.resources.missingmanifestresourceexception(v=vs.110).aspx

Tak, ja po prostu poszedł do PCL i ustawić Neutral Kultura (Language)

  1. W Solution Explorer, kliknij prawym przyciskiem myszy projekt, a następnie Kliknij opcję Właściwości: .
  2. Na lewym pasku nawigacyjnym wybierz opcję Aplikacja i , a następnie kliknij opcję Informacje o zespole.
  3. W oknie dialogowym Informacje o zestawie montażowym wybierz język z listy rozwijanej Język neutralny.
  4. Kliknij OK.

Źródło: https://msdn.microsoft.com/en-us/library/bb385967.aspx

Problem rozwiązany!