Мои файлы ресурсов находятся в другом проекте. В App.xaml.cs в MainwindowProject я пишу код, как показано ниже, чтобы загрузить файл ресурсов.
static ResourceBundle CreateResourceBundle()
{
string dllPath = System.IO.Directory.GetCurrentDirectory() + "\\Trade.Resources.dll";
ResourceBundle resBundle = new ResourceBundle(Assembly.LoadFile(dllPath));
resBundle.LocaleRoot = "Trade.Resources.locale"; //where my locale files are
resBundle.AddResourceFile("Resources");
string culture = "en-US";
resBundle.Locale = culture;
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
return resBundle;
}
некоторые пользовательские контролы используют этот resBundle. Работает нормально во время выполнения. Но если я открою родительское окно xaml во время разработки, я получу это исключение, и пользовательский контроль не может быть загружен.
The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
at System.Reflection.Assembly.LoadFile(String path)
Как я могу решить это? Благодарю.
Редактировать: Временное решение
Я только что добавил интерфейс в проект Trade.Resources. А в App.xaml.cs, как показано ниже.
Type iResType = Type.GetType("Trade.Resources.IRes,Trade.Resources", true);
ResourceBundle resBundle = new ResourceBundle(Assembly.GetAssembly(iResType));
До сих пор он отлично работал как во время разработки, так и во время выполнения.