«Не удалось загрузить тип» System.Object 'из сборки System.private.corelib », потому что родитель не существует» исключеC#

Место общения программистов C#
Ответить
Anonymous
 «Не удалось загрузить тип» System.Object 'из сборки System.private.corelib », потому что родитель не существует» исключе

Сообщение Anonymous »

Я создаю расширение Visual Studio 2022 с помощью проекта VSIX, который состоит из окна, которое отображает классы текущей формы (Winforms) вашего проекта в комбинированном виде, и когда вы выбираете его, он загружает все их элементы управления в списке, так что вы можете редактировать каждый индекс Z-порядка (который определяет, какое управление находится в верхней части других), что вы можете отредактировать. «Чтение» сборка текущего проекта с отражением и получение классов формы.

Код: Выделить всё

.designer.cs
) Но чтобы фактически загрузить элементы управления каждого класса форм, я должен загружать его сборку, но я изо всех сил пытаюсь сделать это, потому что он дает мне много ошибок в зависимости. /> Основная проблема < /strong> < /p>
Однако, когда я пытаюсь извлечь тип из сборки, появляется следующая ошибка: < /p>

не может загрузить тип 'System.object' from Assembly 'System.private.corelib', потому что родитель не существует. Посмотрел повсюду, но я не смог найти исправление для этой ошибки в случае, подобном моим. Это первый раз, когда я делаю расширение Visual Studio и использую подобные сборки, поэтому я был бы очень благодарен, если бы кто -то мог мне помочь, заранее! Formcombobox_selectionChanged событие, которое выглядит следующим образом:

Код: Выделить всё

private void FormsComboBox_SelectionChanged(object sender, RoutedEventArgs e)
{
string file = "";

try
{
// Reflection approach - loads all the requested assemblies
AppDomain.CurrentDomain.AssemblyResolve += Resolver;

// Dynamically 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);
}
}
Также, по какой -то причине, иногда это происходит в следующей строке, где он пытается создать создание объекта.
Вы также можете просто добавить комментарий, и я постараюсь ответить, как только смогу.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... relib-beca
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»