Сейчас на форуме: Rio, johnniewalker, vsv1, Magister Yoda, Kybyx (+4 невидимых) |
eXeL@B —› Крэки, обсуждения —› Ресурсы WPF |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 14 января 2012 18:04 · Личное сообщение · #1 Добрый вечер! Есть dll, содержащая ресурсы - графические и текстовые. Сама сборка - это плод WPF и BAML. С помощью Reflector и доп. плагина удалось получить древовидную структуру ресурсов этой библиотеки и названия ресурсов, а также исходный код baml в формате xaml. Возможно ли решить такую проблему: можно из полученной и отредактированной информации как-то собрать новую сборку, которую потом подсунуть исполяемому файлу? |
|
Создано: 14 января 2012 18:35 · Личное сообщение · #2 Reflector - dll - ПКМ - Export Assembly Source Code - проект - {компиляция-фикс ошибок}xN -> своя дллка подписи в дллках есть? | Сообщение посчитали полезным: wesss |
|
Создано: 15 января 2012 03:50 · Личное сообщение · #3 Можно поподробнее, начиная с пункта "Проект"? В Вижуал студии? На выходе я имею на шаге Export Assembly Source Codeя имею 2 файла Assembly.il и Global.il, а еще 4 файла в расширении .resources. Что дальше с этим делать правильно дальше? Что имеется ввиду под подписью в дллках? Выглядит в рефлекторе это - см. приложенный файл. f344_15.01.2012_EXELAB.rU.tgz - screen.jpg |
|
Создано: 15 января 2012 04:02 · Поправил: plutos · Личное сообщение · #4 |
|
Создано: 15 января 2012 18:17 · Личное сообщение · #5 |
|
Создано: 15 января 2012 18:59 · Личное сообщение · #6 В получившися файле .resx получилось вот такое вот содержание: <data name="images/iconlogo.jpg" mimetype="application/x-microsoft.net.object.binary.base64"> <value> AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB AQEBCQIAAAAAAAAAAAAAAGoTAABqEwAAAAEAAQoPAgAAAGoTAAAC/9j/4AAQSkZJRgABAQEAYABgAAD/.... Эта именно та картинка, которую мне необходимо заменить сдуя по всему перекодированая в base64. Однако попытка решения вопроса "в лоб" не помогла - скодировать картинку в Base64 и тупо вставить в файл .resx и потом конвертнуть resgen'ом в .resources. Но при попытке сконвертить resgen'ом он ругнулся "Тип не может быть прочитан из данных в сроке... в позиции... Внутренняя структура типа могла быть изменена. Либо примените ISSerialazible для данного типа, либо предоставьте преобразователь типов ...." и еще "...Недопустимый формат входного потока...". Что делать? Есть идеи? |
|
Создано: 15 января 2012 19:17 · Поправил: wesss · Личное сообщение · #7 При этом я понимаю, что способ по конвертации из вот этой билеберды AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB AQEBCQIAAAAAAAAAAAAAAGoTAABqEwAAAAEAAQoPAgAAAGoTAAAC/9j/4AAQSkZJRgABAQEAYABgAAD/.... в картинку и, соответственно, обрано есть - Reflector это же делает! Есть ли какие приложения готовые для этого? |
|
Создано: 15 января 2012 19:29 · Личное сообщение · #8 Хмммм... при этом кусок кода в этом файле AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB AQEBCQIAAAAAAAAAAAAAAHADAABwAwAAAAEAAQoPAgAAAHADAAACDAAAAE0AUwBCAEEATQBMAAAAYAAA AGAAAABgAAEA///// повторяется для каждого из ресурсов... Что бы это значило... |
|
Создано: 15 января 2012 19:33 · Личное сообщение · #9 |
|
Создано: 15 января 2012 19:39 · Личное сообщение · #10 |
|
Создано: 15 января 2012 19:46 · Личное сообщение · #11 |
|
Создано: 15 января 2012 20:00 · Личное сообщение · #12 |
|
Создано: 15 января 2012 21:06 · Личное сообщение · #13 Одна проблема решена - картинки могу легко менять - все компилится, собирается обратно и работает, вроде даже стабильно... Но решение одной проблемы, как обычно выявило другую - часть контролов отрисовывается прямо на лету, в том числе и некоторые логотипы. Код и место, которое за это отвечает с помощью рефлектора установил - теперь вопрос - как правильно редактировать .baml/.xaml код, который я вижу в рефлекторе? |
|
Создано: 15 января 2012 21:42 · Личное сообщение · #14 |
|
Создано: 15 января 2012 21:42 · Личное сообщение · #15 |
|
Создано: 15 января 2012 21:52 · Поправил: wesss · Личное сообщение · #16 Какими это средствами делается? Студией? Blender'ом? Пытаюсь создать как-то эти файлы в студии - ругается на все что можно - например - есть кусок кода, полученный при помощи Reflector/BAML Viewer <Login xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Label Column="0" Row="0" Content="UserName" /> <TextBox Column="1" Row="0" /> <Label Column="0" Row="1" Content="Password" /> <TextBox Column="1" Row="1" /> </Grid> </Login> При попытке создать в студии 2010 WPF приложение или библиотеку ругается на то, что Login нет в пространстве имен (подключение дополнительных референсов не помогает)... Прошу подсказать как правильно это сделать ;) Archer пишет: Пользуйся кнопкой "Правка", не создавай сообщения подряд.З.Ы. И нет, не надо мне намекать про скрипт, который мёржит сообщения, намекните лучше кому-нить, кто кодит двиг форума. Ок - уяснил |
|
Создано: 15 января 2012 22:47 · Личное сообщение · #17 |
|
Создано: 15 января 2012 23:06 · Личное сообщение · #18 |
|
Создано: 16 января 2012 13:12 · Личное сообщение · #19 |
|
Создано: 16 января 2012 21:22 · Личное сообщение · #20 sendersu пишет: да уж. я вообще там не вижу юзер кодеса, суто одни ресурсыа можно глянуть на ваш VS прожект? Да в том то и дело, что пока VS прожекта и нет! Пытаюсь создать через студию New WPF Application и к нему как-то приаттачить из этой дллки ресурсы - пока не понимаю как - бьюсь над проблемой, описанной в посте #16 в этой темы... Понимаю, что это граничит с ламерством, но очень прошу дать мне направление куда двигаться с этой темой... |
|
Создано: 17 января 2012 16:26 · Личное сообщение · #21 wesss согласен, если подключать login.xaml (взятого из ресурсов дллки) то он не скомпилится по той проблеме что прожект не видит класса Login а кода то и нету никакого в той дллке - она суто ресурсная что более интересно, нету никакого импорта по дллкам что имеют класс Login Вопрос к вам - есть ли в других дллках определение класса Login? (ето же относиться ко всем другим .xaml) если есть - закидайте |
|
Создано: 17 января 2012 17:46 · Личное сообщение · #22 |
|
Создано: 17 января 2012 20:10 · Личное сообщение · #23 |
|
Создано: 17 января 2012 23:33 · Личное сообщение · #24 Вот тут есть ссылки на Telerik.Windows.Controls - это длл библиотека, подключаю ее в референсах проекта, помогает избавится от проблем с ее пространством имен. SS6Pub.Controls - это ссылка на сам экзешник, в котором по сути есть этот самый объект Логин - как правильно в студии описать и подключить все, чтобы он не орал? <Login xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:pubControls="clr-namespace:SS6Pub.Controls" xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls" xmlns:ns="clr-namespace:SS6Pub.Localization" Width="300" Height="362" WindowStyle="SingleBorderWindow" ResizeMode="NoResize" Topmost="true" WindowStartupLocation="CenterScreen" Style="{StaticResource WindowIconInTaskbar}" FocusedElement="{Binding ElementName=user}"> <Grid> <Grid.RowDefinitions> <RowDefinition Style="{StaticResource LayoutTop1}" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Style="{StaticResource LayoutFooter}" /> </Grid.RowDefinitions> <pubControls:TopHeader /> <Rectangle Row="1" Style="{StaticResource StyleMainContent}" RowSpan="3" /> <Grid Name="LoginGrid" Row="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Label Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_Name}" /> <TextBox Name="user" Column="1" Margin="0,0,5,0" Height="22" TabIndex="10" ToolTip="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_CaseSensitiveUsername}" /> <Label Row="1" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_Password}" /> <PasswordBox Name="password" Row="1" Column="1" Margin="0,0,5,0" Height="22" TabIndex="20" MaxLength="18" ToolTip="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_CaseSensitivePassword}" /> <Label Row="2" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_Host}" ToolTip="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_HostDescription}" /> <ComboBox Name="Server" Column="2" Row="2" ColumnSpan="2" IsEditable="true" DisplayMemberPath="HostName" SelectedValuePath="HostName" ToolTip="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_HostDescription}" ItemsSource="{Binding HostNames}" /> <Label Row="3" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_Language}" /> <ComboBox Name="cmbCulture" Row="3" Column="2" SelectedValuePath="Name" VerticalAlignment="Top" /> <StackPanel Row="4" Column="1" Orientation="Horizontal"> <CheckBox Name="ChkSettings" IsChecked="True" Margin="0,0,10,0" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_SaveSettings}" /> <CheckBox Name="ChkPassword" IsChecked="True" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_SavePassword}" /> </StackPanel> <StackPanel Row="5" Column="1" Orientation="Horizontal"> <Button Name="btnOK" Row="1" Height="23" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="75" Style="{StaticResource TextButtonOK}" IsDefault="true" /> <Button Name="btnCancel" Row="1" IsCancel="true" Height="23" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="75" Style="{StaticResource TextButtonCancel}" /> </StackPanel> <StackPanel Row="6" ColumnSpan="2" /> </Grid> <telerik:RadProgressBar Name="LoginProgressBar" Row="2" Minimum="0" Maximum="100" Margin="5,5,5,5" Style="{StaticResource StyleProgressBar}" /> <TextBlock Name="LoginProgressBarMessage" Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" /> <pubControls:Footer Row="4" /> </Grid> </Login> b23d_17.01.2012_EXELAB.rU.tgz - S6PUB.jpg |
|
Создано: 18 января 2012 23:55 · Личное сообщение · #25 Доброй ночи! Разобрался - это baml viewer криво файл ресурсов декодировал. Он имя класса подменял именем файла xaml. Теперь получается файлы xaml переносить в студию, все билдится, НО..... после билда те baml, которые я подкладываю базовому приложению безнадежно валят его, если отредактированы. Если нет - то приложение спокойно работает как и раньше. Что с этим делать? Почему это возникает? |
|
Создано: 19 января 2012 03:39 · Личное сообщение · #26 |
|
Создано: 19 января 2012 13:12 · Поправил: wesss · Личное сообщение · #27 Там не маленькая сборка сама по себе - есть ли шанс, что при таких явлениях, когда даже замена одного ресурса вываливает приложение, что после того как я соберу всю сборку с изменениями она не будет вести себя также?! Просто хотелось бы понять с точки зрения функционирования почему так происходит? Код же тот же самый по сути - свойство только компонента другое и все, а реакция - вываливание приложения.... Baml Viewer - это аддон к Рефлектору. |
|
Создано: 19 января 2012 14:07 · Поправил: sendersu · Личное сообщение · #28 wesss пишет: когда даже замена одного ресурса вываливает приложение очень похоже на ситуацию когда сборка подписана (pubkeytoken) еще встречался с таким фактом, что подпись может стоять и в baml-ях возвращаясь еще к wesss пишет: это baml viewer криво файл ресурсов декодировал взял для примера 1й попавшийся бамл - глянул в рефл и сае - в чем кривость декодирования? (см аттач) wesss пишет: вываливание приложения например имена ресурсов поменялись - проверьте что имена 1 в 1, иначе приложение их не найдет еще можно дот нет трейсером пройтись - понять на чем именно падает.... 767b_19.01.2012_EXELAB.rU.tgz - refl_sae_baml.zip |
|
Создано: 19 января 2012 15:20 · Поправил: wesss · Личное сообщение · #29 Подписана сборка или эта библиотека? Вроде бы никаких подписей ни в exe, ни в dll при дизасемблировании не видно... Есть какие-то отличие не особенности в коде? Аттач пока не смотрел- на мой взгляд, кривость в том, что приведенный пример в этой же теме пример с <Login> </Login> на самом деле <window>. Может быть я ошибаюсь. Дот неттрейсер попробую, отпишусь по результатам. |
|
Создано: 20 января 2012 00:06 · Личное сообщение · #30 sendersu пишет: еще можно дот нет трейсером пройтись - понять на чем именно падает.... Попробовал - можете как-то прокоментировать данный результат? Как определить подписана сборка или нет? ea50_19.01.2012_EXELAB.rU.tgz - kdt.jpg |
. 1 . 2 . >> |
eXeL@B —› Крэки, обсуждения —› Ресурсы WPF |
Эта тема закрыта. Ответы больше не принимаются. |