Assembly.LoadFile не может найти файл во время разработки - PullRequest
1 голос
/ 13 июля 2011

Мои файлы ресурсов находятся в другом проекте. В 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));

До сих пор он отлично работал как во время разработки, так и во время выполнения.

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

Я не уверен, как вы выбираете файл, после того, как вы установили свойство «Копировать в выходной каталог» файлов ресурсов в «Копировать всегда», а затем просто загрузите файл, он должен работать

0 голосов
/ 13 июля 2011

Попробуйте установить для свойства «Копировать в выходной каталог» файлов ресурсов значение «Всегда копировать».Таким образом, ваш файл ресурсов будет скопирован в каталог Bin исполняемой сборки.Даже если это не сработает, сделайте ваш Ресурс встроенным ресурсом и попробуйте прочитать его из манифеста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...