Установка компонента в xml файле отсутствует элемент управления

Обновлено: 04.07.2024

Он работал хорошо. Внезапно я получил это исключение. Он показывает внутреннюю деталь исключения как "корневой элемент отсутствует". (C:UserscompanyAppDataLocalClickbase_Corp_Sverige_ABTouchStation.vshost.exe_Url_no1nets4fg3oy2p2q2pnwgulbvczlv331.1.0.12пользователь.конфигурация.>")Это происходит, когда я пытаюсь получить значения из параметров.классе по информатике.

В программе.cs-файл ниже приведен код написано

и настройки вызовов.cs класс, где ниже код бросает выше exception

ниже все мое приложение.config

может кто-нибудь помочь мне в этом?

причиной XmlException отсутствует корневой элемент означает, что XML-документ (файл конфигурации здесь), который вы пытаетесь загрузить, не отформатирован должным образом, точнее, отсутствует корневой узел.

каждый XML-файл должен иметь корневой элемент / узел, который охватывает все остальные элементы.

ваш файл должен выглядеть следующим образом:

В дополнение к ответу Акрама Шахда: у меня была такая же проблема (конфигурация системы не удалось инициализировать / корневой элемент отсутствует). Этот.файл конфигурации в папке AppData был пуст. Проблема была решена путем удаления .файл конфигурации в папке AppData.

в консольном приложении вы должны выделить раздел после

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

в моем случае узел connectionStrings был объявлен дважды.

на всякий случай, если кто-нибудь прочитает это:

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

Я удалил файл конфигурации и перезапустил visual studio, и он работал.

надеюсь, что это помогает!

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

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

в моем случае, после проверки все, проблема была в последней части приложения.config, где оператор конфигурации Log4Net создает ошибку.

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

Применимость. Информация в этой статье относится к проектам уровня документа для Word.- Дополнительные сведения см. в разделе доступность функций по типам приложений Office и проектов.

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

В этом пошаговом руководстве описаны следующие задачи:

добавление элементов управления содержимым в документ Word в проекте на уровне документа во время разработки;

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

добавление схемы XML к документу во время разработки;

добавление содержимого XML-файла к пользовательской XML-части в документе во время выполнения;

привязка элементов управления содержимым к элементам в пользовательской XML-части;

привязка DropDownListContentControl к набору значений, определенных в схеме XML.

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.

Предварительные требования

Для выполнения этого пошагового руководства требуются следующие компоненты:

Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье Настройка компьютера для разработки решений Office.

Создать новый проект документа Word

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

Создание проекта документа Word

Создайте проект документа Word с именем емплойиконтролс. Создайте документ для решения. дополнительные сведения см. в разделе инструкции. создание проектов Office в Visual Studio.

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

Добавление элементов управления содержимым в документ

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

Порядок добавления элементов управления содержимым в документ

В документе Word, размещенном в Visual Studio конструкторе, на ленте выберите вкладку Вставка .

В группе таблицы выберите Таблица и вставьте таблицу с 2 столбцами и 3 строками.

Введите текст в первый столбец, как показано в следующем столбце:

Во втором столбце таблицы выберите первую строку (рядом с именем сотрудника).

На ленте выберите вкладку разработчик .

Если вкладка Разработчик не отображается, сделайте ее видимой. Дополнительные сведения см. в разделе инструкции. Отображение вкладки разработчика на ленте.

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

Во втором столбце таблицы выберите вторую строку (рядом с полем Дата найма).

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

Во втором столбце таблицы выберите третью строку (рядом с заголовком).

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

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

Создание XML-файла данных

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

Создание файла данных

В меню Проект выберите пункт Добавить новый элемент.

Откроется диалоговое окно Добавление нового элемента.

В области шаблоны выберите XML-файл.

Присвойте файлу имя employees.xml, а затем нажмите кнопку Добавить .

Файл employees.xml откроется в редакторе кода.

Замените содержимое файла employees.xml следующим текстом.

В Обозреватель решений выберите файл employees.xml .

В окне Свойства выберите свойство действие сборки , а затем измените значение на внедренный ресурс.

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

Создание XML-схемы

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

Порядок создания схемы XML

В меню Проект выберите пункт Добавить новый элемент.

Откроется диалоговое окно Добавление нового элемента.

В области шаблоны выберите XML-схема.

Присвойте схеме имя Employees. xsd и нажмите кнопку Добавить .

Открывается конструктор схем.

В Обозреватель решений откройте контекстное меню Employees. xsd и выберите пункт Просмотреть код.

Замените содержимое файла Employees. xsd следующей схемой.

В меню файл выберите команду сохранить все , чтобы сохранить изменения в employees.xml и в файлах Employees. xsd .

Присоединение схемы XML к документу

XML-схему необходимо присоединить к документу, чтобы привязать DropDownListContentControl к допустимым значениям элемента title .

Присоединение схемы XML к документу ( Word 2013 )

Активируйте EmployeeControls.docx в конструкторе.

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

В диалоговом окне шаблоны и надстройки перейдите на вкладку XML-схема и нажмите кнопку Добавить схему .

Перейдите к созданной ранее схеме Employees. xsd , которая находится в каталоге проекта, а затем нажмите кнопку Открыть .

нажмите кнопку ок в диалоговом окне Параметры схемы .

Добавление схемы XML к документу (Word 2010)

Активируйте EmployeeControls.docx в конструкторе.

На ленте выберите вкладку разработчик .

В группе XML нажмите кнопку схема .

В диалоговом окне шаблоны и надстройки перейдите на вкладку XML-схема и нажмите кнопку Добавить схему .

Перейдите к созданной ранее схеме Employees. xsd , которая находится в каталоге проекта, и нажмите кнопку Открыть .

нажмите кнопку ок в диалоговом окне Параметры схемы .

Откроется область задач Структура XML .

Закройте область задач Структура XML .

Добавление пользовательской XML-части в документ

Перед привязкой элементов управления содержимым к элементам в XML-файле необходимо добавить содержимое XML-файла в новую пользовательскую XML-часть в документе.

Порядок добавления пользовательской XML-части в документ

В Обозреватель решений откройте контекстное меню для ThisDocument. CS или ThisDocument. vb, а затем выберите Просмотреть код.

Добавьте в класс ThisDocument следующие объявления. В этом коде объявляются несколько объектов, которые будут использоваться для добавления пользовательской XML-части в документ.

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

Добавьте следующий метод в класс ThisDocument . Метод AddCustomXmlPart создает пользовательскую XML-часть, которая содержит XML-строку, передаваемую в метод.

Чтобы пользовательская XML-часть создавалась всего один раз, метод создает ее, только если пользовательская XML-часть с соответствующим идентификатором GUID еще не существует в документе. При первом вызове этого метода он сохраняет значение свойства Id в строке employeeXMLPartID . Значение employeeXMLPartID строки хранится в документе, поскольку он был объявлен с помощью атрибута CachedAttribute.

Привязка элементов управления содержимым к элементам в пользовательской XML-части

Привяжите каждый элемент управления содержимым к элементу в пользовательской XML-части с помощью свойства XmlMapping каждого элемента управления содержимым.

Порядок привязки элементов управления содержимым к элементам в пользовательской XML-части

Добавьте следующий метод в класс ThisDocument . Он привязывает каждый элемент управления содержимым к элементу в пользовательской XML-части и задает формат отображения даты DatePickerContentControl.

Выполнение кода при открытии документа

Создайте пользовательскую XML-часть и привяжите пользовательские элементы управления к данным при открытии документа.

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

Добавьте в метод ThisDocument_Startup класса ThisDocument следующий код. Этот код получает XML-строку из файла employees.xml , добавляет XML-строку в новую пользовательскую часть XML в документе и привязывает элементы управления содержимым к элементам в пользовательской XML-части.

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

При открытии документа элементы управления содержимым отображают данные из элементов в пользовательской XML-части. Можно щелкнуть, DropDownListContentControl чтобы выбрать одно из трех допустимых значений для title элемента, определенных в файле Employees. xsd . Если изменить данные в любом из элементов управления содержимым, новые значения сохраняются в пользовательской XML-части в документе.

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

Нажмите клавишу F5 , чтобы запустить проект.

Убедитесь, что таблица в документе похожа на следующую таблицу. Каждая строка во втором столбце извлекается из элемента в пользовательской XML-части в документе.

Щелкните ячейку справа от ячейки имя сотрудника и введите другое имя.

Выберите ячейку справа от ячейки " Дата найма " и выберите другую дату в элементе выбора даты.

Выберите ячейку справа от ячейки заголовка и выберите новый элемент из раскрывающегося списка.

Сохраните и закройте документ.

В проводнике откройте папку \bin\Debug в расположении проекта.

Откройте контекстное меню для EmployeeControls.docx и выберите Переименовать.

Присвойте файлу имя EmployeeControls.docx.zip.

Документ EmployeeControls.docx сохраняется в формате Open XML. Переименование этого документа с помощью расширения имени файла .zip можно проверить содержимое документа. дополнительные сведения об open xml см. в технической статье знакомство с форматами файлов в формате open xml Office (2007).

Откройте файл EmployeeControls.docx.zip .

Откройте папку customXml .

Откройте контекстное меню для item2.xml и выберите Открыть.

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

Убедитесь, что элементы name , hireDate и title содержат новые значения, введенные в элементы управления содержимым в документе.

Закройте файл item2.xml .

Дальнейшие действия

Дополнительные сведения об использовании элементов управления содержимым см. в следующих разделах.

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

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

Использование элементов управления содержимым для защиты частей документов. Дополнительные сведения см. в разделе руководство. Защита частей документов с помощью элементов управления содержимым.

При создании нового решения (wep api) с проектом модульного теста я получаю следующую ошибку, когда добавляю nUnit 3.7.0 в проект модульного теста.

An error occurred while analysing this project after it was built: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Xml.XmlException: Root element is missing. at System.Xml.XmlTextReaderImpl.Throw(Exception e) at System.Xml.XmlTextReaderImpl.ParseDocumentContent() at System.Xml.XmlTextReaderImpl.Read() at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) at System.Xml.XmlDocument.Load(XmlReader reader) at System.Xml.XmlDocument.LoadXml(String xml) at NUnit.Framework.Interfaces.TNode.FromXml(String xmlText) at NUnit.Framework.Internal.TestFilter.FromXml(String xmlText) at NUnit.Framework.Api.FrameworkController.ExploreTests(ICallbackEventHandler handler, String filter) at NUnit.Framework.Api.FrameworkController.ExploreTestsAction..ctor(FrameworkController controller, String filter, Object handler) --- End of inner exception stack trace ---

Чтобы уточнить: Проект будет правильно работать в Visual Studio. Ошибка отображается в средстве выполнения тестов NCrunch, поэтому я не могу правильно запустить TDDing. Проблема решена при возврате к nUnit версии 3.6.1. В этом новом решении я также установил specFlow, и у меня установлен resharper в Visual Studio.

Я не знаю, проблема ли это NCrunch, nUnit, VS. Поскольку проблема устранена при возврате к более старой версии nUnit, я подозреваю, что она здесь, отсюда и этот пост.

Самый полезный комментарий

Исправление 3.7.1 отсутствует. Я также обновил документы, чтобы указать, что пустая или пустая строка также принимается для пустого фильтра с NUnit 3.7.1, но для обратной совместимости следует использовать <filter/> .

Все 18 Комментарий

Это будет связано с новой функцией использования фильтра, переданного в Explore. Похоже, NCrunch передает строку, отличную от XML, string filter переданный в ExporeTests() не использовался, однако теперь он анализируется и читается. Я считаю, что это должен быть элемент xml <filter> - и пустой <filter /> если он не используется.

Я предполагаю, что это было вызвано изменением в NUnit 3.7, но это потребует исправления в NCrunch. Оставим этот вопрос открытым до подтверждения.

Спасибо, что связались со мной по этому поводу. NCrunch передает здесь string.Empty в параметр фильтра. Я не могу вспомнить причину этого. Возможно, я пытался передать (null), но это не сработало, поэтому строка.Empty казалась следующей лучшей вещью, и NUnit всегда принимал это. Я не помню, чтобы когда-либо указывалось, что здесь должен передаваться пустой фильтр в случае отсутствия фильтра.

@CharliePoole Мысли?

Связанный, @remcomulder , есть ли способ, которым NCrunch мог бы провести некоторое интеграционное тестирование с нашими сборками для разработчиков на MyGet, чтобы мы могли выявлять подобные проблемы до выпуска?

@rprouse Немного истории: раньше мы преобразовывали null в TestFilter.Empty. Я остановил это в версии 3.0, потому что мне казалось, что это поощряет небрежное программирование (с нашей стороны).

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

@remcomulder Я рассматриваю это как еще один досадный случай, которого мы бы избежали, если бы знали, что это проблема. Я бы предпочел добавить специальный код, чтобы ваши старые версии могли продолжать работать . т.е. перевести пустую строку в " ". то есть было бы, если бы вы рассказали нам о проблеме до того, как мы выпустили ее. Сборка разработчика, содержащая это изменение, была в нашей ленте 24 апреля.

Однако теперь нас освободили, что усложняет ситуацию. Решение остается за @rprouse, но, честно говоря, я думаю, что это проблема, которой у нас не было. Если бы вы запускали сборки для наших выпусков разработчиков, как я спрашивал в последний раз, когда что-то подобное произошло, вы бы рассказали нам о проблеме, и мы бы добавили код - даже уродливый, если необходимо, - чтобы вы продолжали работать. По этому поводу я голосую за то, чтобы внести исправление, но не выпускать исправление до тех пор, пока мы не увидим другие пожары, которые нужно потушить.

Я думаю, что идеальным подходом здесь было бы для меня ввести немедленное исправление в NCrunch, чтобы согласовать с изменением, а также для исправления, которое было бы введено в NUnit для проверки наличия string.Empty и по умолчанию для фильтра было установлено значение . Было бы лучше, если бы мы выпустили оба из них как можно скорее. В идеале мы хотим, чтобы несколько тысяч человек не испытали действительно неприятных ощущений при обновлении своего NUnit. На мой взгляд, это наиболее эффективный способ борьбы с ущербом, который мы можем предложить.

Я согласен, что этого можно было избежать. Что касается автоматического тестирования сборок NUnit dev, к сожалению, это непросто настроить. Помимо инвестиций в инфраструктуру, необходимых для эффективной работы, меня беспокоят затраты, связанные с оперативным отслеживанием разработки каждого изменения, внесенного в NUnit, поскольку я, скорее всего, в конечном итоге буду преследовать множество проблем, которые мне действительно не нужны. быть вовлеченным. Есть ли у вас другие потребители API, использующие такой подход?

Есть ли способ пометить сборки как кандидаты на выпуск, чтобы тестирование было более целенаправленным?

@remcomulder Да, некоторые так делают. Поскольку не все они предпочитают обсуждать это на публичных форумах, я не могу сказать вам, кто они. (Кстати, я ценю, что вы это делаете!)

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

Я не понимаю, что вы имеете в виду, говоря о поиске проблем, в которых вам не нужно участвовать. Если изменение нарушает вашу интеграцию, вам необходимо принять участие. Иначе нет. Сборки для разработчиков уже объединены, над ними не ведется работа или что-то в этом роде, поэтому каждое изменение - это то, что в конечном итоге будет в выпуске.

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

@remcomulder , наш канал MyGet включает только сборки master, поэтому он включает только тот код, который был проверен и одобрен в PR. Я бы также рассмотрел этот канал как качество RC, поскольку мы проводим только серию наших собственных тестов перед выпуском. Это также довольно низкая громкость. Даже если бы вы могли получать последнюю информацию из этого канала раз в неделю и тестировать, он бы обнаружил эту проблему.

Я назначил это себе. Я внесу исправление в ветку выпуска в рамках подготовки к исправлению.

Я думаю, что ситуация, которую я пытаюсь избежать, заключается в том, что мне нужно быть «за столом» для каждого изменения, внесенного в NUnit. Если сборки для разработчиков достаточно редки или имеют достаточно высокое качество, чтобы не возникало сбойных сборок, то автоматическая установка, которая загружает недавно выпущенные сборки NUnit dev и запускает NCrunch поверх них, может работать нормально. Я ожидаю, что вы, вероятно, имеете хорошее представление о том, сколько сборок разработчика достаточно стабильно для полного интеграционного тестирования, поэтому я полагаюсь на ваш совет здесь.

Прискорбная реальность для такого проекта, как NCrunch, заключается в том, что поддержание точек интеграции (например, этой) - это, безусловно, самая большая часть работы. NCrunch связан с множеством различных проектов, большинство из которых находятся в стадии разработки. Невозможно даже знать обо всех происходящих изменениях, поэтому тяжелая автоматизация и реагирование на запросы пользователей в службу поддержки - это единственный способ сделать что-то. Я упоминаю об этом только потому, что меня часто обвиняют в таких проблемах интеграции, как эта, и я думаю, что это поможет, если каждый сможет понять более широкий контекст инструментов разработки, находящихся дальше по стеку. Учитывая все, что изменилось за последние 12 месяцев, год не был веселым :(

Когда мы говорим «канал разработки», мы имеем в виду двоичные файлы из MyGet, которые представляют изменения, предложенные, проверенные, переданные в CI и объединенные в мастер. По сути, они уже выпущены - по крайней мере, для тех, кто следит за основным исходным кодом. Я предполагаю, что вы используете NUnit как пакет nuget. Если вы этого не сделаете, мы можем вместо этого где-нибудь застегнуть молнию.

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

@rprouse , собираетесь ли вы реализовать решение для этого в 3.7.1? Поскольку @remcomulder создал исправление в nCrunch с версией 3.9. Для меня проблема теперь решена с помощью nUnit 3.7.0 в сочетании с nCrunch 3.9. Просто хочу убедиться, что вы, ребята, не создаете решение в обоих случаях.

@BrianLanghoor опередил меня! Я как раз собирался объявить, что NCrunch v3.9 уже выпущен с исправлением этой проблемы.

@remcomulder, хаха, прости. Спасибо за все ваши усилия.

@remcomulder есть идеи, сколько ваших пользователей

@rprouse К сожалению, у меня нет

Исправление 3.7.1 отсутствует. Я также обновил документы, чтобы указать, что пустая или пустая строка также принимается для пустого фильтра с NUnit 3.7.1, но для обратной совместимости следует использовать <filter/> .

Любая идея, какой файл я должен посмотреть в своем решении?

Любая помощь будет очень оценена.:)

Я использую VS 2008 и Visual Build Pro 6.7.

ОТВЕТЫ

Ответ 1

Убедитесь, что любой файл XML (или любой файл, который будет интерпретироваться как XML файл визуальной студией) имеет правильную структуру XML, то есть один корневой элемент (с любым именем, я использую rootElement в моем примере ):

Ответ 2

Ответ 3

Вы также получите "root-элемент отсутствует", когда BOM поражает:). BOM = знак порядка байтов. Это дополнительный символ, который добавляется к началу файла, когда он сохраняется с неправильной кодировкой.
Иногда это может происходить в Visual Studio при работе с файлами XML. Вы можете либо закодировать что-нибудь, чтобы удалить его из всех ваших файлов, либо если вы знаете, какой файл вы можете заставить визуальную студию сохранить его с помощью определенной кодировки (utf-8 или ascii IIRC).

Если вы откроете файл в редакторе, отличном от VS (попробуйте notepad ++), вы увидите два забавных символа перед <? xml.

  • Файл > Дополнительные параметры сохранения > выберите подходящую кодировку
  • Файл > Сохранить как > сохранить имя файла, щелкните стрелку раскрывающегося списка в правой части кнопки сохранения, чтобы выбрать кодировку

Ответ 4

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

то я просто добавил тег configuration , который фактически обертывает весь xml. Теперь работаю отлично для меня

Ответ 5

Эта ошибка вызвана повреждением файла Proj.

Visual Studio всегда имеет резервный файл проекта в определенной папке.

Пожалуйста, перейдите к:

Вы должны увидеть 2 файла:

Вам нужно только скопировать файл:

И переименуйте как

и переопределить в корневой папке проекта.

Ответ 6

Ответ 7

Ответ 8

В моем случае файл C:\Users\xxx\AppData\Local\PreEmptive Solutions\Dotfuscator Professional Edition\4.0\dfusrprf.xml был заполнен NULL.

Я удалил его; он был воссоздан при первом запуске Dotfuscator, после чего нормальность была восстановлена.

Ответ 9

Вы также можете выполнить поиск файла. Перейдите в каталог проекта с помощью PowerShell и запустите Get-FileMissingRoot:

Ответ 10

Эта ошибка может возникать при редактировании некоторых параметров Toolchain Project Atmel Studio 6.1.2730 SP2.

В моем случае я попытался изменить "Свойства проекта" > "Инструментарий" > "Коннектор" > "Общие настройки" с "Все конфигурации", выбранные в конфигурации. Когда я проверил или снял флажок, появится диалог с ошибкой. Тем не менее, я обнаружил, что могу сделать те же изменения, если я сделал их только с одной конфигурацией сборки за раз; т.е. вместо "Все конфигурации" выбраны только "Отладка" или "Выпуск".

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

Ответ 11

У меня был Blue Screen во время работы Visual Studio 2013, когда я перезапустил, я намеревался снова запустить свой проект, но у меня всегда была эта ошибка Headius. в любом случае

Удаление папок с информацией о Temp. Устраните эту проблему. в моем случае проект был Windows Server, и в основном он создает папку с некоторой информацией о Tem.

внутри Exist a Folder с именем проекта + некоторый сгенерированный графический интерфейс Service.ServerHostLoader_Url_u2jn0xkgjf1th0a3i2v03ft15vj4x52i

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

Ответ 12

В моем случае я обновился до VS2017 и хотел собрать все проекты с MSBuild 4 с помощью моего скрипта сборки (который использовал MSBuild 3.5, когда мы использовали VS2015). То, что обновление MSBuild выглядело хорошо для настольных приложений Windows, но для Windows CE с компактным фреймворком дало бы мне эту запутанную ошибку. Возврат к MSBuild 3.5 для проектов Windows CE исправил проблему для меня.

Кстати, у меня была спецификация в файлах .csproj, и я удалил их для всех проектов в решении, которое не будет создано, но это не поможет.

Ответ 13

Я просто прокомментировал сокращенный код ниже в файле проекта (.csproj), и проблема была исправлена.

Ответ 14

Ответ 15

У меня есть версия Visual Studio Mac OS 2017. Наконец-то мне удалось найти решение через несколько часов (болезненно!).

Затем удалите Visual Studio и переустановите его. Теперь все работает нормально!

Ответ 16

Ответ 17

В форме проекта xamarin. я удалил

Ответ 18

Хо, я просто решил эту проблему, перейдя в проводник управления версиями и выбрал проект проблемы, щелкнул правой кнопкой мыши и выбрал опцию Get Specific Version в меню Advanced. А затем выберите "Тип как последняя версия" и отметьте следующие два флажка и нажмите кнопку "Получить". Затем я обновил решение, и мой проект вернулся к жизни и проблема исчезла. Обратите внимание, что это может перезаписать ваши локальные проекты, чтобы ваши текущие изменения могли потеряться. Поэтому, если у вас нет проблем с вашей локальной копией, вы можете попробовать это. Надеюсь, что это поможет.

Ответ 19

ПИСЬМО ПРИВОДА ОС:\Пользователи\ИМЯ ПОЛЬЗОВАТЕЛЯ \AppData\Local\Microsoft\WebsiteCache

Для получения дополнительных советов по визуальной визуализации посетите Мой блог

Ответ 20

Я получил эту проблему в проекте веб-API. Наконец выяснилось, что это было в комментариях метода "///". У меня есть эти комментарии для автоматической генерации документации для методов API. Что-то в моих комментариях сошло с ума. Я удалил все возвраты каретки, специальные символы и т.д. Не совсем уверен, какая вещь ему не понравилась, но она сработала.

Ответ 21

В моем случае файлы RDLC работают с файлами ресурсов (.resx), у меня была эта ошибка, потому что я не создал соответствующий файл resx для моего отчета rdlc.

Мое решение было добавить файл .resx внутри App_LocalResources таким образом:

Ответ 22

У меня было несколько массивных сбоев сообщества VS2015.

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

Ответ 23

В моем случае я получил эту ошибку из-за пустого файла packages.config . Это привело к сбою диспетчера пакетов NUGET и отображению ошибки Корневой элемент отсутствует. Решением было скопировать элементы из другого непустого файла, а затем изменить его в соответствии с потребностями.

Пример (packages.config):

Ответ 24

Ответ 25

Ответ 26

У меня была такая же проблема в проекте Xamarin Forms. iOS-проект был недоступен, и я не смог перезагрузить его. Я искал решение, которое не нужно ничего удалять.

Ответ 27

Этот файл просто содержит информацию об устройстве устройства и многое другое.

Ответ 28

Ни одно из этих решений не решило мою проблему.

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

XML ( англ. eXtensible Markup Language) — расширяемый язык разметки, предназначенный для хранения и передачи данных.

Простейший XML-документ выглядит следующим образом:

Первая строка — это XML декларация. Здесь определяется версия XML (1.0) и кодировка файла. На следующей строке описывается корневой элемент документа <book> (открывающий тег). Следующие 4 строки описывают дочерние элементы корневого элемента ( title , author , year , price ). Последняя строка определяет конец корневого элемента </book> (закрывающий тег).

Документ XML состоит из элементов (elements). Элемент начинается открывающим тегом (start-tag) в угловых скобках, затем идет содержимое (content) элемента, после него записывается закрывающий тег (end-teg) в угловых скобках.

Информация, заключенная между тегами, называется содержимым или значением элемента: <author>Erik T. Ray</author> . Т.е. элемент author принимает значение Erik T. Ray . Элементы могут вообще не принимать значения.

Элементы могут содержать атрибуты, так, например, открывающий тег <title lang="en"> имеет атрибут lang , который принимает значение en . Значения атрибутов заключаются в кавычки (двойные или ординарные).

Некоторые элементы, не содержащие значений, допустимо записывать без закрывающего тега. В таком случае символ / ставится в конце открывающего тега:

Структура XML¶

XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.

Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.

Все элементы могут иметь подэлементы (дочерние элементы):

Правила синтаксиса (Валидность)¶

Структура XML документа должна соответствовать определенным правилам. XML документ отвечающий этим правилам называется валидным (англ. Valid — правильный) или синтаксически верным. Соответственно, если документ не отвечает правилам, он является невалидным .

Основные правила синтаксиса XML:

  1. Теги XML регистрозависимы — теги XML являются регистрозависимыми. Так, тег <Letter> не то же самое, что тег <letter> .

Открывающий и закрывающий теги должны определяться в одном регистре:

  1. XML элементы должны соблюдать корректную вложенность:
  1. У XML документа должен быть корневой элемент — XML документ должен содержать один элемент, который будет родительским для всех других элементов. Он называется корневым элементом.
  1. Значения XML атрибутов должны заключаться в кавычки:

Сущности¶

Некоторые символы в XML имеют особые значения и являются служебными. Если вы поместите, например, символ < внутри XML элемента, то будет сгенерирована ошибка, так как парсер интерпретирует его, как начало нового элемента.

В примере ниже будет сгенерирована ошибка, так как в значении "ООО<Мосавтогруз>" атрибута НаимОрг содержатся символы < и > .

Также ошибка будет сгенерирована и в слудющем примере, если название организации взять в обычные кавычки (английские двойные):

Чтобы ошибки не возникали, нужно заменить символ < на его сущность. В XML существует 5 предопределенных сущностей:

Таблица I.1 — Сущности ¶
Сущность Символ Значение
&lt; < меньше, чем
&gt; > больше, чем
&amp; & амперсанд
&apos; ' апостроф
&quot; " кавычки

Только символы < и & строго запрещены в XML. Символ > допустим, но лучше его всегда заменять на сущность.

Таким образом, корректными будут следующие формы записей:

В последнем примере английские двойные кавычки заменены на французские кавычки («ёлочки»), которые не являются служебными символами.

Поиск информации в XML файлах (XPath)¶

XPath ( англ. XML Path Language) — язык запросов к элементам XML-документа. XPath расширяет возможности работы с XML.

XML имеет древовидную структуру. В документе всегда имеется корневой элемент (инструкция <?xml version=”1.0”?> к дереву отношения не имеет). У элемента дерева всегда существуют потомки и предки, кроме корневого элемента, у которого предков нет, а также тупиковых элементов (листьев дерева), у которых нет потомков. Каждый элемент дерева находится на определенном уровне вложенности (далее — «уровень»). У элементов на одном уровне бывают предыдущие и следующие элементы.

Это очень похоже на организацию каталогов в файловой системе, и строки XPath, фактически, — пути к «файлам» — элементам. Рассмотрим пример списка книг:

XPath запрос /bookstore/book/price вернет следующий результат:

Сокращенная форма этого запроса выглядит так: //price .

В приведенной ниже таблице представлены некоторые выражения XPath и результат их работы:

Кодировки¶

И еще один важный момент, который стоит рассмотреть — кодировки. Существует множество кодировок, о них подробнее можно прочитать в статье Набор символов.

Самыми распространенными кириллическими кодировками являются Windows-1251 и UTF-8 . Последняя является одним из стандартов, но большая часть ФНС отчетности имеет кодировку Windows-1251 .

В XML файле кодировка объявляется в декларации:

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

Таблица I.3 — Смена кодировки в разных программах ¶
Программа Кодировка
Notepad++ «Документ → Кодировка»
Geany «Документ → Установить кодировку»
Firefox «Вид → Кодировка»
Chrome «Настройка → Дополнительные инструменты → Кодировка»

В большинстве случаев при работе с русскоязычными файлами помогает переключение кодировки на Windows-1251 или UTF-8 . Если все равно не удается прочитать содержимое XML документа, стоит открыть его в Mozilla Firefox, он отлично распознает кодировки.

Если ничего не помогает, вполне возможно, что файл был поврежден.

XSD схема¶

XML Schema — язык описания структуры XML-документа, его также называют XSD. Как большинство языков описания XML, XML Schema была задумана для определения правил, которым должен подчиняться документ. Но, в отличие от других языков, XML Schema была разработана так, чтобы её можно было использовать в создании программного обеспечения для обработки документов XML.

После проверки документа на соответствие XML Schema читающая программа может создать модель данных документа, которая включает:

  • словарь (названия элементов и атрибутов);
  • модель содержания (отношения между элементами и атрибутами и их структура);
  • типы данных.

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

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