powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как достать assembly из xap-файла?
3 сообщений из 3, страница 1 из 1
Как достать assembly из xap-файла?
    #37541711
tplink
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветсвую.
Мне нужно на клиентской стороне достать assembly одной dll-ки которая находится внутри xap-файла. Метод
Assembly assembly = Assembly.GetExecutingAssembly(); не подходит так как возвращает assembly текущего проекта.

Сейчас делаю так:
Скопировал эту библиотеку в папку ClientBin, и от туда тяну клиенту:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
...
System.Net.WebClient wc = new WebClient();
 wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
 wc.OpenReadAsync(new Uri(myFileName, UriKind.Relative), "GET");
...

 void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                 Assembly assembly = loadAssembly(e.Result);
                    if (assembly != null)
                    {
                        object[] versionAttributes = assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false);
                        if (versionAttributes != null && versionAttributes.Length > 0)
                            tbVersionTxt.Text = string.Format(Properties.Resources.ABOUT_VERSION, ((AssemblyFileVersionAttribute)versionAttributes[0]).Version);
                    }
 
            }
        }


 private Assembly loadAssembly(Stream s)
        {
                string className = (myClassName);
                AssemblyPart ap = new AssemblyPart();
                Assembly a = ap.Load(s);
                return a;
        }

Думал вариант загрузить xap-файл клиенту, достать эту библиотеку. Но при обращении к xap-файлу генерится экспешн access denied. И как его распаковать?
Пожалуйста, посоветуйте как сделать лучше?
...
Рейтинг: 0 / 0
Как достать assembly из xap-файла?
    #37541714
tplink
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел способ как распаковывать xap-файл: http://hackingsilverlight.blogspot.com/2009/12/hacking-silvelright-xap-file.html
Решение:
1. Добавил класс Unzipper
2. Изменил wc_OpenReadCompleted:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
void wc_OpenReadCompleted(object sender, System.Net.OpenReadCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                UnZipper unzip = new UnZipper(e.Result);
                foreach (string filename in unzip.GetFileNamesInZip())
                {
                     if (filename == (myFileName)
                    {
                       Assembly assembly = loadAssembly(unzip.GetFileStream(filename));
                       if (assembly != null)
                       {
                           object[] versionAttributes = assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false);
                           if (versionAttributes != null && versionAttributes.Length > 0)
                               tbVersionTxt.Text = string.Format(Properties.Resources.ABOUT_VERSION, ((AssemblyFileVersionAttribute)versionAttributes[0]).Version);
                       }
                    }
                }
Но при этом получается что каждый раз этот 5 мб ный xap-файл копируется клиенту...не красиво...
...
Рейтинг: 0 / 0
Как достать assembly из xap-файла?
    #37541738
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем смысл всех этих мультиков?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как достать assembly из xap-файла?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]