Vấn đề tôi đang phải đối mặt có thể như sau:ResourceMap không tìm thấy lỗi khi tham chiếu một tập tin tài nguyên trong một thư viện lớp cầm tay
tôi đã phát triển một thư viện lớp cầm tay để đóng gói một kết nối dịch vụ. Bên trong thư viện lớp này có một tệp tin Resources.resw chứa các chuỗi. Các chuỗi này được gọi chỉ bằng các phương thức của thư viện lớp (ví dụ để ghi đè các phương thức ToString()).
Như tôi đã nói đây là thư viện lớp di động. Nếu tôi tham khảo nó như là một dll, hoặc thậm chí là một dự án bên trong một giải pháp khác, nó được xây dựng và biên dịch một cách chính xác. Sau đó, tôi thực hiện cuộc gọi sử dụng một phương pháp thư viện này trong ứng dụng của tôi, nói
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);
}
Tại điểm mà tôi gọi là phương pháp s.ToString(), tôi nhận được một lỗi "không tìm thấy tài nguyên Bản đồ".
Để giải thích nơi này xuất phát từ:
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);
}
}
và bên trong phương pháp ghi đè ToString() có mã mà trông như sau:
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" + " | ");
}
...
Các tập tin tài nguyên được gọi là resources.resw và là tệp resw mặc định mà ResourceLoader gọi nếu không có khác được gọi.
Kỳ lạ, nếu tôi sao chép tệp tài nguyên bên trong ứng dụng khách cục bộ, nó được tham chiếu chính xác bởi tất cả các cuộc gọi đến tệp tài nguyên thư viện lớp và mọi thứ hoạt động.
Thư viện lớp này được coi là SDK khi hoàn tất. Tôi có cần phân phối tệp tài nguyên riêng biệt không?
Sự cố như vậy mà tôi chưa bao giờ gặp phải với các thư viện lớp và tệp resx bình thường. Resw đang đưa cho tôi các creep ..
vẫn gặp lỗi tương tự. Chúng ta có cần khởi tạo cái gì trước đó không? – hellodear
Tôi không nghĩ rằng nó không được chấp nhận. Tôi không nhận được bất kỳ tin nhắn như thế vào năm 2017 ngay bây giờ. Tham số chuỗi được sử dụng nếu bạn sử dụng đường dẫn khác với đường dẫn mặc định Strings Tôi tin rằng – batmaci
Với ** ResourceLoader.GetForCurrentView() ** Tôi nhận được cùng một lỗi ("Bản đồ tài nguyên không tìm thấy"). ** Giải pháp ResourceLoader ("Assembly/ResourceFile") ** mới đang hoạt động nhưng đi kèm với cảnh báo không dùng nữa. – jannikb