Конструктору не удается обработать неизвестное имя процесса

Обновлено: 05.05.2024

У меня есть класс CPP, конструктор которого выполняет некоторые операции. Некоторые из этих операций могут потерпеть неудачу. Я знаю, что конструкторы ничего не возвращают.

Разрешено ли выполнять некоторые операции, кроме инициализации членов в конструкторе?

Можно ли сказать вызывающей функции, что некоторые операции в конструкторе потерпели неудачу?

Могу ли я сделать new ClassName() возврат NULL, если в конструкторе возникают ошибки?

Типичным примером № 1 является проверка данных. То есть, если у вас есть класс Square , с конструктором, который принимает один параметр, длину стороны, вы хотите проверить, больше ли это значение, чем 0.

Что касается первого вопроса, позвольте мне предупредить вас, что виртуальные функции могут неинтуитивно вести себя в конструкторах. То же самое с деконструкторами. Остерегайтесь называть таких.

№ 3 - Почему вы хотите вернуть NULL? Одним из преимуществ ОО НЕ является необходимость проверки возвращаемых значений. Просто перехватите () соответствующие потенциальные исключения.

Да, хотя некоторые стандарты кодирования могут запрещать это.

Да. Рекомендуемый способ - бросить исключение. Кроме того, вы можете хранить информацию об ошибке внутри объекта и предоставлять методы для доступа к этой информации.

Если объект все еще не находится в допустимом состоянии, даже если некоторая часть аргументов конструктора не соответствует требованиям и, таким образом, помечена как ошибка, 2) действительно не рекомендуется делать. Лучше, когда объект либо существует в допустимом состоянии, либо вообще не существует.

@ooxi Нет, это не так. Ваш переопределенный new вызывается для выделения памяти, но вызов конструктора выполняется компилятором после возврата вашего оператора, что означает, что вы не можете перехватить ошибку. Это при условии, что новое называется вообще; это не для объектов, размещенных в стеке, которых должно быть большинство из них.

Вы можете создать статический метод, который выполняет вычисления и возвращает либо объект в случае успеха, либо не в случае сбоя.

В зависимости от того, как выполняется построение объекта, может быть лучше создать другой объект, который позволяет создавать объекты нестатическим методом.

Косвенный вызов конструктора часто называют «фабрикой».

Это также позволит вам вернуть нулевой объект, что может быть лучшим решением, чем возвращение нулевого.

Спасибо @null! К сожалению, не могу принять два ответа здесь :( В противном случае я бы тоже принял этот ответ !!

Не @MayurK никаких забот, то общепринятый ответ не отметить на правильный ответ, но тот , который работает для вас.

@null: В C ++ вы не можете просто вернуться NULL . Например, int foo() < return NULL вы бы на самом деле возвращали 0 (ноль) целочисленный объект. В std::string foo() < return NULL; >вы случайно называют std::string::string((const char*)NULL) что Неопределенное поведение (NULL не указывает на \ 0 с завершающим строкой).

std :: option может быть далеко, но вы всегда можете использовать boost :: option, если вы хотите пойти по этому пути.

@Vld: В C ++ объекты не ограничены типами классов. И с общим программированием, весьма обычно заканчивать с фабриками для int . Например std::allocator , это совершенно нормальная фабрика.

@SebastianRedl уже дал простые, прямые ответы, но некоторые дополнительные объяснения могут быть полезны.

TL; DR = есть правило стиля, чтобы конструкторы были простыми, есть причины для этого, но эти причины в основном связаны с историческим (или просто плохим) стилем кодирования. Обработка исключений в конструкторах четко определена, и деструкторы все равно будут вызываться для полностью сконструированных локальных переменных и членов, что означает, что в идиоматическом коде C ++ не должно быть никаких проблем. Правило стиля в любом случае сохраняется, но обычно это не проблема - не вся инициализация должна быть в конструкторе, и, в частности, не обязательно в этом конструкторе.

Это общее правило стиля, согласно которому конструкторы должны делать абсолютный минимум, который они могут установить для задания определенного допустимого состояния. Если ваша инициализация более сложна, она должна быть обработана вне конструктора. Если не существует дешевого для инициализации значения, которое ваш конструктор может установить, вы должны ослабить инварианты, навязанные вашим классом, чтобы добавить их. Например, если выделение хранилища для вашего класса для управления является слишком дорогим, добавьте еще не выделенное, но все же нулевое состояние, потому что, конечно, наличие особых случаев, таких как ноль, никогда ни у кого не вызывало проблем. Гм.

Хотя обычно, конечно, в этой крайней форме, это очень далеко от абсолюта. В частности, как показывает мой сарказм, я в лагере, который говорит, что ослабление инвариантов почти всегда слишком дорого. Тем не менее, существуют причины, лежащие в основе правила стиля, и есть способы иметь как минимальные конструкторы, так и сильные инварианты.

Причины связаны с автоматической очисткой деструктора, особенно перед лицом исключений. По сути, должен быть четко определенный момент, когда компилятор становится ответственным за вызов деструкторов. Пока вы все еще находитесь в вызове конструктора, объект не обязательно полностью построен, поэтому недопустимо вызывать деструктор для этого объекта. Следовательно, ответственность за уничтожение объекта переходит к компилятору только после успешного завершения конструктора. Это называется RAII (Resource Allocation Is Initialization), который на самом деле не лучшее название.

Если в конструкторе происходит выброс исключительной ситуации, все, что частично сконструировано, должно быть явно очищено, обычно в try .. catch .

Однако компоненты объекта, которые уже успешно построены, уже являются обязанностью компилятора. Это означает, что на практике это не имеет большого значения. например

Тело этого конструктора пусто. До тех пор , как конструкторы base1 , member2 и member3 являются безопасными исключением, нет ничего страшного. Например, если конструктор member2 throws, этот конструктор отвечает за очистку себя. База base1 была уже полностью построена, поэтому ее деструктор будет вызываться автоматически. member3 никогда не был даже частично построен, поэтому не нуждается в очистке.

Даже при наличии тела локальные переменные, которые были полностью созданы до того, как было сгенерировано исключение, будут автоматически уничтожены, как и любая другая функция. Тела конструктора, которые манипулируют необработанными указателями или «владеют» неким неявным состоянием (хранящимся в другом месте) - обычно это означает, что вызов функции начала / получения должен соответствовать вызову завершения / выпуска - могут вызвать проблемы безопасности исключений, но реальная проблема там не удается правильно управлять ресурсом через класс. Например, если вы замените необработанные указатели unique_ptr на в конструкторе, деструктор для unique_ptr будет вызываться автоматически при необходимости.

Есть и другие причины, по которым люди приводят предпочтение конструкторов «сделай по минимуму». Во-первых, просто потому, что существует правило стиля, многие люди считают, что вызовы конструктора дешевы. Один из способов получить это, но при этом иметь сильные инварианты, - это иметь отдельный класс фабрики / компоновщика, который имеет вместо этого ослабленные инварианты и который устанавливает необходимое начальное значение, используя (потенциально много) обычных вызовов функций-членов. Получив начальное состояние, которое вам нужно, передайте этот объект в качестве аргумента конструктору класса с сильными инвариантами. Это может "украсть кишки" объекта слабых инвариантов - семантики перемещения - что является дешевой (и обычно noexcept ) операцией.

И, конечно, вы можете заключить это в make_whatever () функцию, так что вызывающим этой функции не нужно видеть экземпляр класса ослабленных инвариантов.

Абзац, где вы пишете «Пока вы все еще в вызове конструктора, объект не обязательно полностью построен, поэтому недопустимо вызывать деструктор для этого объекта. Следовательно, ответственность за разрушение объекта переносится только на компилятор когда конструктор успешно завершает работу "может действительно использовать обновление, касающееся делегирования конструкторов. Объект полностью построен , когда любая наиболее полученные из конструктора закончена, и деструктора будет называться , если исключение происходит внутри конструктора делегирующий.

Таким образом, конструктор «сделай минимум» может быть закрытым, а функция «make_whwhat ()» может быть другим конструктором, который вызывает закрытый.

Это не определение RAII, с которым я знаком. Мое понимание RAII состоит в том, чтобы преднамеренно получить ресурс в (и только в) конструкторе объекта и освободить его в деструкторе. Таким образом, объект может использоваться в стеке для автоматического управления получением и освобождением ресурсов, которые он инкапсулирует. Классический пример - замок, который получает мьютекс при его создании и освобождает его при разрушении.

@Eric - Да, это абсолютно стандартная практика - стандартная практика, которая обычно называется RAII. Это не только я, что расширяет определение - это даже Страуструп, в некоторых беседах. Да, RAII о связывании жизненных циклов ресурсов с жизненными циклами объектов, ментальной моделью является владение.

@Eric - предыдущие ответы удалены, потому что они плохо объяснены. В любом случае, сами объекты являются ресурсами, которыми можно владеть. Все должно иметь владельца, в цепочке вплоть до main функции или статических / глобальных переменных. Объект, выделенный с использованием new , не принадлежит, пока вы не назначите эту ответственность, но умные указатели владеют объектами, выделенными в куче, на которые они ссылаются, и контейнеры владеют их структурами данных. Владельцы могут решить удалить рано, владельцы деструктор несет полную ответственность.

Репутация: нет
Всего: нет

Код метода "InitializeComponent" создан конструктором, и его не следует изменять вручную. Удалите все изменения, а затем снова попробуйте открыть конструктор. C:\path\project\Form1.cs 2203 0"

Код

base.FormBorderStyle = FormBorderStyle.Fixed3D;

Ошибка 2:
"Ошибка 2 Имя типа или пространства имен "CustomMarshalers" отсутствует в пространстве имен "System.Runtime.InteropServices" (пропущена ссылка на сборку?) C:\path\project\NatTraversal\Interop\IStaticPortMappingCollection.cs 8 42 RM"

Позже внезапно еще две ошибки появилось:

Цитата

Ошибка 3 Не удалось найти имя типа или пространства имен "EnumeratorToEnumVariantMarshaler" (пропущена директива using или ссылка на сборку?) C:\path\project\NatTraversal\Interop\IStaticPortMappingCollection.cs 13 97 RM
Цитата

Ошибка 4 Выражение switch или оператор case должны иметь тип bool, char, string, integral, enum или соответствующий тип с возможным значением NULL. C:\path\project\Form1.cs 752 25 RM

Репутация: 4
Всего: 8

Привет.
Извиняюсь, но не совсем понятно что ты делаешь. Ну ладно, попробуем.

1. Замени FormBorderStyle.Fixed3D; на System.Windows.Forms.BorderStyle.Fixed3D;

2. В Solution Explorer -> Referens нажми Add Reference. и на .NET в списке найди CustomMarshalers и кнопка OK.
(к сожалению у меня нет русской редакции студии, не знаю что нажимать по русски. )
Хотя на сайте Microsofta написано This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.
Provides internal marshaling support for the .NET Framework. ". и не предназначен для использования непосредственно из программного кода"
Так же из текста мне непонятно что он в твоём коде делает.

3. Если вторая ошибка исправится, то эта должна пропасть сама.

4. На соответствующей строке кода посмотри что передается в switch и что там стоят за значения case, из твоего описания понять нечего нельзя.

user posted image

Оптимист - это плохо информированный человек.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

[ Время генерации скрипта: 0.0987 ] [ Использовано запросов: 21 ] [ GZIP включён ]

ОБНОВЛЕНИЕ

  • Я использовал точки останова, чтобы убедиться, что строка не попала
  • Форма показывает

Я также безуспешно пробовал следующее:

ОБНОВЛЕНИЕ №2 . Мне удалось заставить это работать, удалив и повторно добавив ссылки на элемент управления WebKit. Не уверен, что случилось. Спасибо всем.

Мне удалось заставить это работать, удалив и повторно добавив ссылки на элемент управления WebKit. Не знаю, что произошло, но комментарий John Arlen направил меня в правильном направлении. Спасибо всем.

Вот обходной путь:

Вставьте код сразу после InitializeComponent(); .
После этого вызова инициализируются частные поля формы, и вы можете взаимодействовать с объектами пользовательского интерфейса.

Я знаю, что это не дает прямого ответа на вопрос, но в большинстве случаев это должно работать.

Вообще, гораздо лучшая процедура - обрабатывать переопределенные виртуальные методы для внутренних событий, а не регистрироваться для запущенного события.

Было бы интересно, если бы это не называлось.

Это самое простое, что я могу представить, почему он не срабатывает!

Я подозреваю, что проблема не в том, что он «не срабатывает», а скорее в том, что рассматриваемый код не обрабатывает вещи так, как вы подозреваете.

Попробуйте установить точку останова в строке "* .Dock ". Учитывая приведенный выше код, он должен быть запущен, как только вы откроете эту форму. Однако, поскольку это событие Form.Load , этого не произойдет, пока экземпляр формы не отобразится через form.Show() .

Я пришел сюда по той же проблеме. Как только увидел обновление:

Мне удалось заставить это работать, удалив и повторно добавив ссылки на элемент управления WebKit. Не уверен, что случилось. Спасибо всем.

Причина в том, что в Visual Studio, когда вы добавляете элемент управления в форму, вы не получаете автоматически все обработчики событий - form_load является одним из недостающих обработчиков. Вы получаете код для рисования элемента управления и все. Чтобы сообщить Windows, что у вас есть обработчик для события загрузки формы, вы должны добавить

this.Load + = новый System.EventHandler (this.Form1_Load);

К коду в InitializeComponent для формы. Эта строка отсутствовала, когда я добавил элемент управления в форму, поэтому мой обработчик не вызывался.

Вы можете добавить строку вручную или перейти в окно дизайна в Visual Studio и щелкнуть пустую часть формы. Вы увидите новую автоматически сгенерированную пустую заглушку, которая выглядит так:

private void Form1_Load_1 (отправитель объекта, EventArgs e)

>

Подчеркивание-1 прикреплено к имени, потому что у меня уже была нефункционирующая процедура Form1_Load.

Если затем вы проверите код form1.designer.cs, вы увидите, что строка this.load + = . была добавлена ​​к коду инициализации.

Иногда простой пример кода не так прост.

Другая причина, по которой он не срабатывает, заключается в том, что вы используете DataBindings и имеете ошибки из-за того, что вы изменили имена свойств или удалили свойства.

Столкнувшись с этим сегодня, сначала озадачило. После прочтения этого и подобных предложенных решений моя тайна была раскрыта.

Первое: как я быстро определил свою проблему - я переместил регистрацию события this.Load вверх как первую строку InitializeComponent () в коде, созданном дизайнером. Тогда моя точка останова была достигнута. Затем я включил "перерыв" для всех выброшенных исключений, включая родные. Это привело меня прямо к проблеме.

В моем случае включение веб-элемента управления привело к тому, что загрузка произошла в неожиданно ранний момент, сразу после построения; где, поскольку мой код был написан с предположением, что загрузка произойдет, когда страница наконец активируется в пользовательском интерфейсе. Он зависел от переменной состояния, которая еще не была настроена.

Другие проблемы, такие как отсутствие зависимой загружаемой с задержкой DLL, исключение в восходящем обработчике загрузки и т. Д., Могут быть отслежены таким образом.

После исправления я переместил this.Load () обратно в исходное место.

Немного поздно для вечеринки, но просто дважды щелкнув заголовок на вкладке Form1.cs [Design], он создает функцию Form1_Load, которая затем работает нормально.

Написание его вручную, похоже, не работает, поскольку подключения создаются, когда вы дважды щелкаете по нему, так же, как те же функции происходят, когда вы дважды щелкаете кнопку, список и т. Д.

Я только что решил ту же проблему. Основная причина должна заключаться в том, что событие Form1_Load не было запущено во время загрузки Form1. Просто откройте Form1 в представлении Designer, щелкните заголовок Form1, щелкните тег «Event» под свойством Form1, найдите «Load» в списке свойств, вы найдете список событий справа от него. Выберите «Form1_Load», перестройте его. Вы можете проверить, выбрав любое событие, кроме Form1_Load, чтобы проверить, вызывается ли Form1_Load () или нет.

Этот класс имеет функции, которые нам нужны во всех наших последующих сервисах, такие как стандартизированное планирование выполнения и функции ведения журнала.

В новый проект я добавляю следующее:

В конструкторе Windows класс отображается правильно.

Когда я меняю службу на производную от OurServiceBase

Конструктор перестает работать:

Error screenshot

Полная ошибка: не удалось показать конструктор для этого файла, потому что ни один из классов в нем не может быть спроектирован. Дизайнер проверил следующие классы в файле: EmailProcessor --- Не удалось загрузить базовый класс OurSharedLibrary.CienaServiceBase. Убедитесь, что на сборку есть ссылка и что все проекты построены.

Имеются ссылки на соответствующие сборки, проект строится. Я не понимаю, почему дизайнер нервничает из-за этого, поскольку мой сервис в конечном итоге происходит от проектируемого класса.

Любые предложения приветствуются.

Дополнительная информация - стек вызовов от дизайнера, когда он отображает ошибку о невозможности разработать производный сервис:

19.07.2011 14:34 EDT Новое открытие.

Класс «OurServiceBase» существует в отдельном проекте (обычно упоминается только как DLL). По прихоти я скопировал файл базового класса в свой проект, построил и открыл конструктор. Это сработало! Когда я снова удалил файл базового класса и вернулся к ссылке на внешнюю DLL, дизайнер снова сломался.

Лучше всего было бы начать с версии OurServiceBase без каких-либо функций и посмотреть, сможете ли вы спроектировать MyService . Если да, то медленно добавляйте функциональность, пока она не сломается.

Поскольку похоже, что у Visual Studio возникла проблема с сериализацией одного из членов OurServiceBase .

Вы также можете получить эту ошибку, если ваша форма находится в общем проекте. Обходной путь - исключить файл из общего проекта, а затем создать ссылки на файл в основных проектах.

Перейдите в Проект > > > Система в поле " Подсистема "выберите" Windows ( / SUBSYSTEM: WINDOWS ) ", нажмите" Применить ".

Перейдите в Проект > > > Дополнительно в поле " точка входа". ", введите значение" Main "и" Применить ", наконец, нажмите" ОК ".

Перейдите к коду файла созданной вами формы (например, MyForm.cpp ) и введите приведенный ниже код в этот файл:

using namespace System;

using namespace System::Windows::Forms;

void Main(array^ args)

Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Project1::MyForm form; Application::Run(%form);

В дополнение к ответу Ausibanez выше.

Мое приложение было в X64, но моя проблема заключалась в том, что я недавно добавил ссылку COM на WIA (Windows Image Acquisition), что и было проблемой.

Если конструктор Windows Forms не загружается из-за ошибки в коде, в стороннем компоненте или где-то еще, вместо конструктора появится страница ошибок. Эта страница ошибок не обязательно означает ошибку в конструкторе. Ошибка может находиться где-то на странице с выделенным кодом с именем .Designer.cs. Ошибки отображаются в свертываемых желтых строках со ссылкой для перехода к расположению ошибки на кодовой странице.

Windows Forms Designer error page

Вы можете игнорировать ошибки и продолжить загрузку конструктора, нажав кнопку Пропустить и продолжить. Это действие может привести к непредвиденному поведению, например, элементы управления могут не отображаться в области конструктора.

Экземпляры ошибки

При развертывании желтой строки ошибок отображается каждый экземпляр ошибки. Многие типы ошибок содержат точное местоположение в следующем формате: [имя_проекта][имя формы] строка:[номер строки] столбец:[номер столбца]. Если с ошибкой связан стек вызовов, можно щелкнуть ссылку Показать стек вызовов. Изучение стека вызовов может помочь устранить ошибку.

Windows Forms Designer expanded error

  • Для приложений Visual Basic на странице ошибок во время разработки отображается только одна ошибка, но может отображаться несколько экземпляров одной и той же ошибки.
  • Для приложений C++ ошибки не содержат ссылок на расположение кода.

Справка по ошибке

Ошибки времени разработки

В этом разделе перечислены потенциальные ошибки.

не является допустимым идентификатором

Эта ошибка указывает, что поле, метод, событие или объект имеют неправильное имя.

уже существует в

отсутствует на панели элементов

Сторонний конструктор пытался получить доступ к вкладке на панели элементов, которая не существует. Обратитесь к поставщику компонентов.

Синтаксический анализатор запрошенного языка не установлен

Отсутствует служба, которая требуется для генерирования и анализа исходного кода

Это проблема со сторонним компонентом. Обратитесь к поставщику компонентов.

Произошло исключение при попытке создать экземпляр

Сторонний конструктор запросил у Visual Studio создание объекта, но объект вызвал ошибку. Обратитесь к поставщику компонентов.

Документ открыт в несовместимом режиме в другом редакторе

Изменения в документ уже внесены в другом редакторе

Закройте и снова откройте конструктор, чтобы изменения вступили в силу. Как правило, Visual Studio автоматически перезагружает конструктор после внесения изменений. Однако другие конструкторы, такие как сторонние конструкторы компонентов, могут не поддерживать поведение перезагрузки. В этом случае Visual Studio предлагает закрыть и повторно открыть конструктор вручную.

Файл открыт в несовместимом режиме в другом редакторе

Слишком высокий ранг массива

Visual Studio поддерживает только одномерные массивы в блоке кода, анализируемом конструктором. Многомерные массивы допустимы за пределами этой области.

Не удалось открыть сборку Неправильный тип элемента. Этот сериализатор ожидает элемент типа

Это проблема со сторонним компонентом. Обратитесь к поставщику компонентов.

Не удается получить доступ к панели элементов Visual Studio

Visual Studio сделала вызов к панели элементов, которая была недоступна. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Не удается привязать обработчик событий к событию , так как событие доступно только для чтения

Эта ошибка чаще всего возникает при попытке подключить событие к элементу управления, наследуемому от базового класса. Если переменная, входящая в элемент управления, является закрытой, Visual Studio не удается подключить событие к методу. К наследуемым в частном порядке элементам управления невозможно привязывать дополнительные события.

Не удается создать имя метода для указанного компонента, так как он не является членом контейнера конструктора

Visual Studio попыталась добавить обработчик событий в компонент, не имеющий переменной-члена в конструкторе. Обратитесь к поставщику компонентов.

Не удается присвоить объекту имя , поскольку у него уже есть имя

Это внутренняя ошибка в сериализаторе Visual Studio. Она указывает, что сериализатор дважды пытался назвать объект, что не поддерживается. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Не удается удалить или уничтожить унаследованный компонент

Наследуемые элементы управления находятся под контролем наследующего класса. Изменения в наследуемом элементе управления должны быть внесены в класс, из которого создается элемент управления. Таким образом, нельзя переименовать или уничтожить его.

В категории нет инструмента для класса

Конструктор пытался ссылаться на класс на определенной вкладке панели элементов, но класс не существует. Обратитесь к поставщику компонентов.

Для класса отсутствует соответствующий конструктор

Сторонний конструктор запросил Visual Studio создать объект с определенными параметрами в конструкторе, который не существует. Обратитесь к поставщику компонентов.

Не удалось создать код для свойства

Компонент не вызвал метод Container.Add() в своем конструкторе

Это ошибка в компоненте, который вы только что загрузили или поместили в форму. Она указывает, что компонент не добавил себя в контейнерный элемент управления (будь то другой элемент управления или форма). Конструктор продолжит работу, но во время выполнения могут возникнуть проблемы с компонентом.

Имя компонента не может быть пустым

Эта ошибка возникает при попытке переименовать компонент в пустое значение.

Не удалось получить доступ к переменной , так как она еще не инициализирована

Эта ошибка может возникнуть из-за двух сценариев. У стороннего поставщика компонентов возникла проблема с элементом управления или компонентом, которые они распространили, или написанный вами код имеет рекурсивные зависимости между компонентами.

Не удалось найти тип Не удалось загрузить тип

Не удалось найти шаблоны элементов проекта для унаследованных компонентов

Шаблоны для унаследованных форм в Visual Studio недоступны. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Делегат класса не имеет метод вызова. Является ли этот класс делегатом

Visual Studio попыталась создать обработчик событий, но с типом события возникла ошибка. Это может произойти, если событие было создано языком, не соответствующим CLS. Обратитесь к поставщику компонентов.

Повторное объявление члена

Эта ошибка возникает из-за того, что переменная-член была объявлена дважды (например, два элемента управления Button1 объявляются в коде). Имена должны быть уникальными в унаследованных формах. Кроме того, имена не могут различаться только регистром.

Ошибка чтения ресурсов из файла ресурсов для языка и региональных параметров

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

Ошибка чтения ресурсов из файла ресурсов для языка и региональных параметров по умолчанию

Эта ошибка может возникнуть, если в проекте имеется неправильный RESX-файл для языка и региональных параметров по умолчанию.

Не удалось проанализировать метод Недопустимое имя компонента:

Тип класса образуется несколькими разделяемыми классами из того же файла

При определении класса в нескольких файлах с помощью ключевого слова partial в каждом файле может быть только одно частичное определение.

Чтобы устранить эту ошибку, удалите все, кроме одного частичного определения класса из файла.

Не удалось найти сборку

Недопустимое имя сборки .

Компонент запросил определенную сборку, но имя, предоставленное компонентом, не является допустимым именем сборки. Обратитесь к поставщику компонентов.

Не удается создать базовый класс

Visual Studio загрузила класс, но этот класс не может быть создан, так как средство реализации класса не предоставило конструктор. Если класс поддерживает конструктор, убедитесь, что у вас нет проблем, вызывающих ошибки с отображением в конструкторе, например ошибки компилятора. Кроме того, убедитесь, что все ссылки на класс правильные, все имена классов написаны без ошибок. В противном случае, если класс недоступен для создания, измените его в представлении кода.

Не удалось загрузить базовый класс

Невозможно создать класс в этой версии Visual Studio

Конструктор для этого элемента управления или компонента не поддерживает те же типы, что и Visual Studio. Обратитесь к поставщику компонентов.

Имя класса в этом языке является недопустимым идентификатором

Не удается добавить компонент, так как он содержит циклическую ссылку на

Нельзя добавить элемент управления или компонент в него же. Другая ситуация, когда это может произойти: в методе InitializeComponent формы (например, Form1) есть код, который создает другой экземпляр Form1.

Невозможно изменить конструктор

Эта ошибка возникает, когда файл в редакторе помечается как доступный только для чтения. Убедитесь, что файл не помечен только для чтения и приложение не запущено.

Для данного файла не удалось отобразить конструктор, так как в нем отсутствуют классы для разработки

Эта ошибка возникает, когда Visual Studio не удается найти базовый класс, удовлетворяющий требованиям конструктора. Формы и элементы управления должны быть производными от базового класса, поддерживающего конструкторы. Если вы создаете производный элемент из унаследованной формы или элемента управления, убедитесь, что проект создан.

Не установлен конструктор базового класса

Visual Studio не удалось загрузить конструктор для класса. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Конструктор должен создать экземпляр типа , однако сделать это не удалось, поскольку тип объявлен абстрактным

Эта ошибка произошла из-за того, что базовый класс объекта, передаваемого конструктору, является абстрактным, а это запрещено.

Не удалось загрузить файл в конструктор

Базовый класс этого файла не поддерживает конструкторы. В качестве обходного решения используйте представление кода для работы с файлом. Щелкните правой кнопкой мыши файл в обозревателе решений и выберите пункт Просмотр кода.

Язык этого файла не поддерживает службы, необходимые для создания и разбора кода

Эта ошибка, скорее всего, возникла из-за открытия файла, который находится в проекте, не поддерживающем конструкторы.

Класс синтаксического анализатора языка не реализован должным образом.

Используемый язык зарегистрировал класс конструктора, который не является производным от правильного базового класса. Обратитесь к поставщику используемого языка.

Имя уже используется другим объектом

Это внутренняя ошибка в сериализаторе Visual Studio. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

В объекте не реализован интерфейс IComponent

Visual Studio попыталась создать компонент, но созданный объект не реализует интерфейс IComponent. Обратитесь к поставщику компонентов за исправлением.

Объект вернул пустое значение для свойства , что недопустимо

Объект данных сериализации имеет неверный тип

Объект данных, предлагаемый сериализатором, не является экземпляром типа, соответствующего используемому текущему сериализатору. Обратитесь к поставщику компонентов.

Не удается определить расположение требуемой службы

Служба, необходимая Visual Studio, недоступна. Если вы пытались загрузить проект, который не поддерживает этот конструктор, используйте редактор кода для внесения необходимых изменений. В противном случае, если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Экземпляр службы должен быть производным от интерфейса или содержать его реализацию

Эта ошибка указывает, что компонент или конструктор компонентов вызвал метод AddService, для которого требуется интерфейс и объект, но указанный объект не реализует указанный интерфейс. Обратитесь к поставщику компонентов.

Не удалось изменить текст в окне кода

Эта ошибка возникает, если Visual Studio не удается изменить файл из-за проблем с местом на диске или памятью, или файл помечен только для чтения.

Объект перечислителя панели элементов поддерживает одновременное извлечение только одного элемента

Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Из панели элементов не удалось загрузить элемент для компонента

Указанный компонент вызвал исключение при доступе к нему Visual Studio. Обратитесь к поставщику компонентов.

Из панели элементов не удалось загрузить элемент для элемента панели элементов

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

Не удалось найти тип .

При загрузке конструктора Visual Studio не удалось найти тип. Убедитесь, что имеется ссылка на сборку, содержащую тип. Если сборка является частью текущего проекта разработки, убедитесь, что проект создан.

Служба разрешения типов может быть вызвана только из потока основного приложения

Переменная либо не объявлена, либо никогда не присваивалась

Для команды меню уже существует обработчик команд

Эта ошибка возникает, если сторонний конструктор добавляет команду, которая уже имеет обработчик в таблице команд. Обратитесь к поставщику компонентов.

Компонент с именем уже существует

Сторонний компонент выполнил обратный вызов к элементу на вкладке панели элементов, но элемент уже содержал обратный вызов. Обратитесь к поставщику компонентов.

Языковые средства для данного языка не поддерживаю CodeModel, с помощью которой загружается конструктор

Тип не имеет конструктора с параметрами типов

Visual Studio не удалось найти конструктор с соответствующими параметрами. Это может быть результатом предоставления конструктора с типами, отличными от требуемых. Например, конструктор Point может принимать два целых числа. Если вы указали число с плавающей запятой, возникает эта ошибка.

Не удается добавить ссылку в текущее приложение

Не удалось извлечь текущий файл

Эта ошибка возникает при изменении файла, который в настоящее время записывается в систему управления исходным кодом. Как правило, Visual Studio представляет диалоговое окно возврата файла, чтобы пользователь мог извлечь файл. На этот раз файл не был извлечен, возможно, из-за конфликта слияния во время возврата. Чтобы устранить эту ошибку, убедитесь, что файл не заблокирован, а затем попробуйте извлечь файл вручную.

Не удается найти страницу с именем

Эта ошибка возникает, когда конструктор компонентов запрашивает доступ к странице из диалогового окна "Параметры", используя имя, которое не существует. Обратитесь к поставщику компонентов.

Не удается найти свойство на странице

Эта ошибка возникает, когда конструктор компонентов запрашивает доступ к определенному значению на странице из диалогового окна "Параметры", используя значение, которое не существует. Обратитесь к поставщику компонентов.

В Visual Studio не удается открыть конструктор файла, так как класс этого файла не унаследован от класса, поддерживающего визуальную разработку

В Visual Studio не удается сохранить или загрузить экземпляры типа

Это проблема со сторонним компонентом. Обратитесь к поставщику компонентов.

Документ не удалось открыть в Visual Studio в представлении конструктора

Эта ошибка указывает, что язык проекта не поддерживает конструктор и возникает при попытке открыть файл в диалоговом окне "Открыть файл" или из Обозревателя решений. Вместо этого измените файл в представлении кода.

В Visual Studio не удалось найти конструктор для классов типа

Visual Studio загрузила класс, но класс невозможно создать. Вместо этого измените класс в представлении кода, щелкнув класс правой кнопкой мыши и выбрав Просмотреть код.

Читайте также: