Выполнение сборки WPF из памяти - PullRequest
2 голосов
/ 01 мая 2011

Этот метод здесь , показанный ниже, хорошо работает для большинства приложений.

FileStream fs = new FileStream(filePath, FileMode.Open); // read the bytes from the application EXE file
BinaryReader br = new BinaryReader(fs);
byte[] bin = br.ReadBytes(Convert.ToInt32(fs.Length));
fs.Close();
br.Close();
Assembly a = Assembly.Load(bin); // load the bytes into Assembly
MethodInfo method = a.EntryPoint; // search for the Entry Point
if (method != null) 
{
     // create an instance of the Startup form Main method
     object o = a.CreateInstance(method.Name);
     // invoke the application starting point
     method.Invoke(o, null); //EXCEPTION THROWN HERE
}

Однако, когда я попытался использовать его для запуска приложения WPF, возникло исключение:

Exception has been thrown by the target of an invocation.

Внутреннее исключение было типа System.IO.IOException:

Cannot locate resource 'mainwindow.xaml'.

Примечание: приложение работает нормально само по себе. для целей тестирования было скомпилировано пустое приложение wpf.

1 Ответ

0 голосов
/ 01 мая 2011

Эта ошибка обычно возникает, когда вы перемещаете файл запуска xaml в другое место или переименовываете его, но забыли обновить файл App.xaml.В случае, если вы переименовали его, просто обновите файл App.xaml следующим образом - StartupUri="mainwindow.xaml" или переместите его в другое обновление подпапки, как это - StartupUri="FolderName/mainwindow.xaml"

...