ResourceMap nicht gefunden " - Fehler bei der Referenzierung einer Ressource-Datei innerhalb einer portable class library
Das problem, das ich bin vor ist wie folgt:
Entwickelt ich eine portable class library zu Kapseln, eine service-Verbindung. Innerhalb dieser Klasse-Bibliothek gibt es ein Mittel.resw-Datei mit Zeichenfolgen. Diese Zeichenfolgen werden als nur durch Methoden der Klasse library (zum Beispiel zum überschreiben der ToString () - Methoden).
Als ich sagte, dies ist eine portable class library. Wenn ich darauf verweisen, wie eine dll, oder auch als Projekt innerhalb einer anderen Lösung, es wird gebaut und richtig kompiliert. Dann habe ich einen Anruf tätigen verwenden Sie eine Methode aus dieser Bibliothek, die in meiner Anwendung sagen
ClientFacadeConnector connector = new ClientFacadeConnector();
ICollection<SearchResult> results = null;
string message = string.Empty;
if (maxResults != -1) //Search with max Results
{
try
{
if (!contextQuery.Trim().Equals(string.Empty))
{
results = await connector.GetConnected().SearchAsync(contextQuery, query, maxResults);
message = "Search with ContextQuery " + contextQuery + ", Query " + query + ", max results " + maxResults.ToString();
}
else
{
results = await connector.GetConnected().SearchAsync(query, maxResults, true);
message = "...using normal Query search, Query " + query + ", max results " + maxResults.ToString();
}
}
catch (IQserException ex)
{
message = ex.Message;
}
}
if (results != null)
{
ICollection<LocalSearchResult> contentResults = new List<LocalSearchResult>();
foreach (SearchResult s in results)
{
var q = s.ToString();
var contentItem = await connector.GetConnected().GetContentAsync(s.ContentId);
LocalSearchResult lContent = new LocalSearchResult(contentItem);
lContent.Score = s.Score;
lContent.Relevance = s.Relevance;
lContent.MarkFullText(query);
contentResults.Add(lContent);
}
An dem Punkt, wo ich s nennen.ToString () - Methode, erhalte ich die Fehlermeldung "Ressourcen-Karte nicht gefunden".
Zu erklären, wo diese herkommt:
public static class AppResources
{
private static ResourceLoader resourceLoader;
static AppResources()
{
//Load local file Resources.resw by default
resourceLoader = new ResourceLoader();
}
public static string GetResources(string key)
{
if (string.IsNullOrEmpty(key))
throw new ArgumentNullException("key");
return resourceLoader.GetString(key);
}
}
und in der überschriebenen ToString () - Methode der code, die wie folgt aussieht:
public override string ToString()
{
StringBuilder buf = new StringBuilder(AppResources.GetResources("InstrSearchResultContent"));
if (ContentId != -1)
{
buf.Append(AppResources.GetResources("StringContent") + " ID:" + ContentId.ToString() + " | ");
}
else
{
buf.Append(AppResources.GetResources("StringNo") + AppResources.GetResources("StringContent") + "ID" + " | ");
}
...
Die Ressource-Datei aufgerufen wird, Ressourcen.resw und ist der Standard-resw-Datei, die ResourceLoader Anrufe, wenn kein anderer genannt wird.
Seltsam genug, wenn ich kopieren Sie die Ressource-Datei innerhalb der client-Anwendung, die lokal referenziert wird korrekt durch alle Aufrufe der Klassenbibliothek Ressource-Datei und alles funktioniert.
Dieser Klassenbibliothek soll ein SDK, wenn Sie fertig sind. Brauche ich zum verteilen der Ressource-Datei getrennt?
Solch ein problem habe ich noch nie erlebt mit normalen Class-Bibliotheken und resx-Dateien. Resw ist mir unheimlich..
InformationsquelleAutor Achilles P. | 2012-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Akzeptierte Antwort gepostet von @Rory MacLeod kann nicht mehr wahr sein. Ich habe versucht, und VS gewarnt, dass
ResourceLoader(String)
ist veraltet. Die folgenden arbeitete in meinem Fall:Ich denke nicht, dass es veraltet ist. Ich dont bekommen, eine Nachricht wie die, dass im Jahr 2017 jetzt. String-parameter wird verwendet, wenn Sie verschiedene Pfad-Strings als Standard-Pfad glaube ich
Mit ResourceLoader.GetForCurrentView() ich bin immer die gleiche Fehlermeldung ("Resource Map nicht gefunden"). Die neue ResourceLoader("Montage/ResourceFile") - Lösung arbeitet, aber in Begleitung mit einer deprecation Warnung.
InformationsquelleAutor joym8
Sieht es aus wie Sie haben, geben Sie den Namen der Ressource anzeigen wenn Sie beim erstellen des
ResourceLoader
wie diese:Zum Beispiel, wenn Ihre Klasse Bibliothek war genannt "Company.Lib.dll" und Ihre Ressource-Datei war "Ressourcen.resw", die Sie verwenden würden:
Aber dies scheint nicht dokumentiert werden voll auf MSDN - es legt nahe, dass Sie können geben Sie einfach den Namen der Ressourcendatei, aber es könnte sein, dass das funktioniert nur für Ressourcen-Dateien, in der Windows Store-Anwendung-Projekt. Es war diese Seite , die mir zeigte, dass, für die Bibliotheken, die Sie benötigen, um geben Sie den Namen der assembly, wie gut.
hat mir sehr geholfen, danke +1
InformationsquelleAutor Rory MacLeod
Hatte ich auch ähnliches Problem, auch mit Wiederholung aller Schritte von Wie laden von zeichenfolgenressourcen.
Das problem war, dass meine Ressourcen.resw-Datei war leer. Wenn ich noch ein paar fake-string, um es begann alles wie erwartet funktioniert.
InformationsquelleAutor EugenSoft
Ich hatte ein ähnliches Problem, das ich gelöst, indem Sie die Build Action von der resw-Datei zu PRIResource in den Eigenschaften. Ich hatte umbenannt, eine vorhandene resx, resw, aber in der Dokumentation nicht erwähnt, dass Sie auch zu ändern Sie die build action.
InformationsquelleAutor Kris
Stand ich vor einem ähnlichen Problem bei der Entwicklung der UWP-app mit einer Klasse Bibliothek.
Also ich habe ein /Strings/en-Us/Ressource.resw-Datei in meiner Bibliothek.
gibt eine Ausnahme
gibt mir eine deprecation-Warnung, funktioniert aber.
Meine Lösung, die nicht geben eine Warnung ist diese:
InformationsquelleAutor jannikb