Как исправить «Корневой элемент отсутствует». при сборке Visual Studio (VS)? - PullRequest
58 голосов
/ 22 сентября 2010

Как исправить "Root элемент отсутствует." при сборке Visual Studio (VS)?

Есть идеи, какой файл мне нужно посмотреть в моем решении?

На самом деле, я получаю это сообщение об ошибке внутри "Visual Build Pro" при использовании команды "Make VS 2008". Эта команда прекрасно работает при построении других решений (например, около 20), и я не совсем уверен, почему мое получает ошибку.

Любая помощь будет принята с благодарностью. :)

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

Ответы [ 27 ]

42 голосов
/ 18 мая 2015

В моем случае это был файл xxxxxxxxxxxx.vcxproj.user, который вызывал проблему (он был пустым) после сбоя. Я переименовал его, и проблема ушла.

32 голосов
/ 22 сентября 2010

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

Если вы откроете файл в редакторе, отличном от VS (попробуйте notepad ++), вы увидите два забавных символа передДополнительные параметры сохранения> выберите подходящую кодировку

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

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

<?xml version="1.0"?> 
<rootElement>
 ...
</rootElement>
14 голосов
/ 24 июня 2016

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

<?xml version="1.0" encoding="utf-8"?>
<settings>
  <repositoryPath>Packages</repositoryPath>
</settings>

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

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <settings>
     <repositoryPath>Packages</repositoryPath>
  </settings>
</configuration>
5 голосов
/ 18 мая 2018

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

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

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

C:\Users\<Your user>\Documents\Visual Studio <Vs version>\Backup Files\<your project>

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

Original-May-18-2018-1209PM.<your project>.csproj
Recovered-May-18-2018-1209PM.<your project>.csproj

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

Original-May-18-2018-1209PM.<your project>.csproj

И переименуйте в

<your project>.csproj 

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

Проблема решена!

4 голосов
/ 03 марта 2017

В моем случае, когда я открыл файл .csproj, он был пустым, поэтому я пошел на свой предыдущий коммит в git, скопировал содержимое этого файла и вставил в него мой текущий .csproj файл. После чего я удалил файл .csproj.user, перезагрузил свой проект, и все снова заработало.

4 голосов
/ 22 января 2015

Я получил ту же ошибку. показывая ошибку Microsoft.Data.Entity не удалось загрузить корневой элемент отсутствует. Когда я удалил этот файл из C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 и снова открыл свое решение, моя проблема была решена. Все отлично работает

3 голосов
/ 06 августа 2015

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

function Get-FileMissingRoot {

    dir -recurse |
        where {
            ($_ -is [IO.FileInfo]) -and 
            (@(".xml", ".config") -contains $_.extension) 
        } |
        foreach {
            $xml = New-Object Xml.XmlDocument;
            $filename = $_.FullName
            try {
                $xml.Load($filename)
            }
            catch {
                write ("File: " + $filename)
                write ($_.Exception.Message)
            }
        }
}
3 голосов
/ 27 ноября 2014

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

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

2 голосов
/ 02 марта 2015

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

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

папка была

C:\Users\User_NAME\AppData\Local\NAme_OF_THeProject

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

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

...