контекст
Я создаю расширение Visual Studio 2022 с проектом VSIX, который состоит из окна, которое отображает текущие классы формы (Winforms) вашего проекта в ComboBox, и когда вы выбираете его, он загружает все их элементы управления в списке, так что вы можете редактировать каждый Z-индекс (который определяет, что контроль подходит или на вершине других), так что вы можете редактировать, P./Preaky Mane. Pree. Pree. Pree. Pree. Pree. Pree. Pree. Pree. /> Чтобы сделать это, я подумал о том, чтобы «читать» сборку текущего проекта с отражением и извлекать классы формы.
Для Combobox я на самом деле просто идентифицирую классы формы по их расширению (.designer.cs), но для того, чтобы на самом деле загружать элементы управления каждого класса формы, я должен загружать его сборку, но я борюсь с тем, что он дает мне много зависимости. Это была 'System.windows.forms' и несколько других зависимостей, но я смог решить его, используя событие AssemblyResolve, добавив каждую необходимую сборку из структуры. 'System.Object' from Assembly 'System.private.corelib', потому что родитель не существует. Это первый раз, когда я делаю расширение Visual Studio и использую подобные сборки, поэтому я был бы очень благодарен, если бы кто -то мог мне помочь, заранее! Formcombobox_selectionChanged событие, которое выглядит следующим образом:
private void FormsComboBox_SelectionChanged(object sender, RoutedEventArgs e)
{
string file = "";
try
{
// Reflection Aproach - Loads all the requested assemblies
AppDomain.CurrentDomain.AssemblyResolve += Resolver;
// Dinamicly Load Project's Assembly
Assembly assembly = Assembly.LoadFrom(Path.Combine(Path.GetDirectoryName(clientProject.FullName), "bin\\Debug\\net8.0-windows\\" + clientProject.Properties.Item("OutputFilename").Value.ToString()));
// Get the assembly name (with namespaces)
file = files.Where(s => s.Contains(FormsComboBox.SelectedItem.ToString())).First();
// Get the Type from the assembly (HERE IS WHERE THE ERROR POPS UP)
Type formType = assembly.GetType(GetAssemblyName(file), true, true);
// Create an object of the Type
object formClass = Activator.CreateInstance(formType);
// Fill the ListView with the project's Form Class Controls
controls.Clear();
if (formClass is System.Windows.Forms.Form form)
{
foreach (System.Windows.Forms.Control control in form.Controls)
{
controls.Add(control);
}
}
ControlListView.Items.Clear();
for (int i = 0; i < controls.Count; i++)
{
ControlListView.Items.Add("(" + controls.GetType().Name + ") " + controls.Name);
}
} catch (Exception ex) {
MessageBox.Show(ex.Message + ex.StackTrace);
}
}
< /code>
Кроме того, по какой -то причине, иногда это происходит в следующей строке, где он пытается создать создание объекта.
Вы также можете просто добавить комментарий, и я постараюсь ответить, как только смогу. < /p>
Подробнее здесь: https://stackoverflow.com/questions/795 ... relib-beca
«Не удалось загрузить тип» System.Object 'из сборки «System.private.corelib», потому что родитель не существует »исключе ⇐ C#
Место общения программистов C#
1756805112
Anonymous
контекст
Я создаю расширение Visual Studio 2022 с проектом VSIX, который состоит из окна, которое отображает текущие классы формы (Winforms) вашего проекта в ComboBox, и когда вы выбираете его, он загружает все их элементы управления в списке, так что вы можете редактировать каждый Z-индекс (который определяет, что контроль подходит или на вершине других), так что вы можете редактировать, P./Preaky Mane. Pree. Pree. Pree. Pree. Pree. Pree. Pree. Pree. /> Чтобы сделать это, я подумал о том, чтобы «читать» сборку текущего проекта с отражением и извлекать классы формы.
Для Combobox я на самом деле просто идентифицирую классы формы по их расширению (.designer.cs), но для того, чтобы на самом деле загружать элементы управления каждого класса формы, я должен загружать его сборку, но я борюсь с тем, что он дает мне много зависимости. Это была 'System.windows.forms' и несколько других зависимостей, но я смог решить его, используя событие AssemblyResolve, добавив каждую необходимую сборку из структуры. 'System.Object' from Assembly 'System.private.corelib', потому что родитель не существует. Это первый раз, когда я делаю расширение Visual Studio и использую подобные сборки, поэтому я был бы очень благодарен, если бы кто -то мог мне помочь, заранее! Formcombobox_selectionChanged событие, которое выглядит следующим образом:
private void FormsComboBox_SelectionChanged(object sender, RoutedEventArgs e)
{
string file = "";
try
{
// Reflection Aproach - Loads all the requested assemblies
AppDomain.CurrentDomain.AssemblyResolve += Resolver;
// Dinamicly Load Project's Assembly
Assembly assembly = Assembly.LoadFrom(Path.Combine(Path.GetDirectoryName(clientProject.FullName), "bin\\Debug\\net8.0-windows\\" + clientProject.Properties.Item("OutputFilename").Value.ToString()));
// Get the assembly name (with namespaces)
file = files.Where(s => s.Contains(FormsComboBox.SelectedItem.ToString())).First();
// Get the Type from the assembly (HERE IS WHERE THE ERROR POPS UP)
Type formType = assembly.GetType(GetAssemblyName(file), true, true);
// Create an object of the Type
object formClass = Activator.CreateInstance(formType);
// Fill the ListView with the project's Form Class Controls
controls.Clear();
if (formClass is System.Windows.Forms.Form form)
{
foreach (System.Windows.Forms.Control control in form.Controls)
{
controls.Add(control);
}
}
ControlListView.Items.Clear();
for (int i = 0; i < controls.Count; i++)
{
ControlListView.Items.Add("(" + controls[i].GetType().Name + ") " + controls[i].Name);
}
} catch (Exception ex) {
MessageBox.Show(ex.Message + ex.StackTrace);
}
}
< /code>
Кроме того, по какой -то причине, иногда это происходит в следующей строке, где он пытается создать создание объекта.
Вы также можете просто добавить комментарий, и я постараюсь ответить, как только смогу. < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/79553192/could-not-load-type-system-object-from-assembly-system-private-corelib-beca[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия