Microsoft MVP성태의 닷넷 이야기
오류 유형: 883. dotnet build/restore - error : Root element is missing [링크 복사], [링크+제목 복사],
조회: 12229
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

dotnet build/restore - error : Root element is missing

오호~~~ 이게 웬일입니까, 빌드하다가 실로 오랜만에 시스템이 갑자기 BSOD가 뜨더니, 리부트 후 다시 하는 빌드에서 이런 오류가 발생합니다.

$ dotnet publish -r linux-x64 -c Release
MSBuild version 17.8.3+195e7f5a3 for .NET
  Determining projects to restore...
/usr/share/dotnet/sdk/8.0.100/NuGet.targets(156,5): error : Root element is missing. [/mnt/c/temp/ConsoleApp1/ConsoleApp1.csproj]

재미있는 것은, 윈도우 환경에서 "dotnet publish -r win-x64 -c Release"로 실행하면 문제 없이 빌드가 됩니다. ^^;




자, 그럼 오류가 발생했다고 하는, /usr/share/dotnet/sdk/8.0.100/NuGet.targets 파일의 156 라인을 볼까요?

155      <!-- Call restore -->
156      <RestoreTask
157        RestoreGraphItems="@(_RestoreGraphEntryFiltered)"
158        RestoreDisableParallel="$(RestoreDisableParallel)"
159        RestoreNoCache="$(RestoreNoCache)"
160        RestoreIgnoreFailedSources="$(RestoreIgnoreFailedSources)"
161        RestoreRecursive="$(RestoreRecursive)"
162        RestoreForce="$(RestoreForce)"
163        HideWarningsAndErrors="$(HideWarningsAndErrors)"
164        Interactive="$(NuGetInteractive)"
165        RestoreForceEvaluate="$(RestoreForceEvaluate)"
166        RestorePackagesConfig="$(RestorePackagesConfig)">
167        <Output TaskParameter="EmbedInBinlog" ItemName="EmbedInBinlog" />
168      </RestoreTask>

RestoreTask니까, 그냥 이렇게만 해도 오류가 재현됩니다.

$ dotnet restore
  Determining projects to restore...
/usr/share/dotnet/sdk/8.0.100/NuGet.targets(156,5): error : Root element is missing. [/mnt/c/temp/ConsoleApp1/ConsoleApp1.csproj]

문제를 좁혀본 결과, 아래의 참조가 없으면 괜찮았습니다.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <PublishAot>true</PublishAot>
    <InvariantGlobalization>true</InvariantGlobalization>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />
  </ItemGroup>

</Project>

혹시나 싶어 새롭게 프로젝트를 만들고 추가를 했더니,

$ cd /tmp/testconsole

$ dotnet new console

$ dotnet add package Microsoft.VisualStudio.Azure.Containers.Tools.Targets
  Determining projects to restore...
  Writing /tmp/tmpnqryAv.tmp
info : X.509 certificate chain validation will use the fallback certificate bundle at '/usr/share/dotnet/sdk/8.0.100/trustedroots/codesignctl.pem'.
info : X.509 certificate chain validation will use the fallback certificate bundle at '/usr/share/dotnet/sdk/8.0.100/trustedroots/timestampctl.pem'.
info : Adding PackageReference for package 'Microsoft.VisualStudio.Azure.Containers.Tools.Targets' into project '/mnt/c/temp/ConsoleApp2/ConsoleApp2.csproj'.
info :   GET https://api.nuget.org/v3/registration5-gz-semver2/microsoft.visualstudio.azure.containers.tools.targets/index.json
info :   OK https://api.nuget.org/v3/registration5-gz-semver2/microsoft.visualstudio.azure.containers.tools.targets/index.json 898ms
info : Restoring packages for /mnt/c/temp/ConsoleApp2/ConsoleApp2.csproj...
info :   CACHE https://api.nuget.org/v3/vulnerabilities/index.json
info :   CACHE https://api.nuget.org/v3/vulnerabilities/vulnerability.base.json
info :   CACHE https://api.nuget.org/v3/vulnerabilities/vulnerability.update.json
error: Root element is missing.

역시나 동일한 오류가 발생합니다. ^^;




반면 다른 패키지 참조는 또 잘 됩니다.

$ dotnet add package CustomMessageLoop
...[생략: 성공 메시지]...

그렇다면, 지난번 빌드에서 Microsoft.VisualStudio.Azure.Containers.Tools.Targets 패키지를 구성하는 중 뭔가 불안정한 상태로 있는 순간 블루 스크린이 떴던 것이 아닌가 생각됩니다. 일단, 이거저거 따지기 귀찮아서 모든 Nuget cache를 삭제한 다음,

// Managing the global packages, cache, and temp folders
// https://learn.microsoft.com/en-us/nuget/consume-packages/managing-the-global-packages-and-cache-folders

$ dotnet nuget locals all --list
http-cache: /home/testusr/.local/share/NuGet/http-cache
global-packages: /home/testusr/.nuget/packages/
temp: /tmp/NuGetScratchtestusr
plugins-cache: /home/testusr/.local/share/NuGet/plugin-cache

$ dotnet nuget locals all --clear
Clearing NuGet HTTP cache: /home/testusr/.local/share/NuGet/http-cache
Clearing NuGet global packages folder: /home/testusr/.nuget/packages/
Clearing NuGet Temp cache: /tmp/NuGetScratchtestusr
Clearing NuGet plugins cache: /home/testusr/.local/share/NuGet/plugin-cache
Local resources cleared.

다시 패키지 추가를 시도했더니, 이번에는 잘 되었습니다. (단지, 특정 소스에서 설치 시 시간이 약 10분 정도 넘게 걸린 듯합니다.) 어쩌면 그 패키지만 삭제했어도 되지 않았을까 싶은데 다음번에 재현되면 테스트해 보겠습니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 12/15/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... [61]  62  63  64  65  66  67  68  69  70  71  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
12505정성태1/23/202119110.NET Framework: 1018. .NET Core Kestrel 호스팅 - Web API 추가 [1]파일 다운로드1
12504정성태1/23/202122649.NET Framework: 1017. .NET 5에서의 네트워크 라이브러리 개선 (2) - HTTP/2, HTTP/3 관련 [1]
12503정성태1/21/202121355오류 유형: 696. C# - HttpClient: Requesting HTTP version 2.0 with version policy RequestVersionExact while HTTP/2 is not enabled.
12502정성태1/21/202121901.NET Framework: 1016. .NET Core HttpClient의 HTTP/2 지원파일 다운로드1
12501정성태1/21/202120700.NET Framework: 1015. .NET 5부터 HTTP/1.1, 2.0 선택을 위한 HttpVersionPolicy 동작 방식파일 다운로드1
12500정성태1/21/202122129.NET Framework: 1014. ASP.NET Core(Kestrel)의 HTTP/2 지원 여부파일 다운로드1
12499정성태1/20/202123640.NET Framework: 1013. .NET Core Kestrel 호스팅 - 포트 변경, non-localhost 접속 지원 및 https 등의 설정 변경 [1]파일 다운로드1
12498정성태1/20/202119738.NET Framework: 1012. .NET Core Kestrel 호스팅 - 비주얼 스튜디오의 Kestrel/IIS Express 프로파일 설정
12497정성태1/20/202125888.NET Framework: 1011. C# - OWIN Web API 예제 프로젝트 [1]파일 다운로드2
12496정성태1/19/202121336.NET Framework: 1010. .NET Core 콘솔 프로젝트에서 Kestrel 호스팅 방법 [1]
12495정성태1/19/202125532웹: 40. IIS의 HTTP/2 지원 여부 - h2, h2c [1]
12494정성태1/19/202123049개발 환경 구성: 522. WSL 2 인스턴스와 호스트 측의 Hyper-V에 운영 중인 VM과 네트워크 연결을 하는 방법 [2]
12493정성태1/18/202121333.NET Framework: 1009. .NET 5에서의 네트워크 라이브러리 개선 (1) - HTTP 관련 [1]파일 다운로드1
12492정성태1/17/202119687오류 유형: 695. ASP.NET 0x80131620 Failed to bind to address
12491정성태1/16/202120585.NET Framework: 1008. 배열을 반환하는 C# COM 개체의 메서드를 C++에서 사용 시 메모리 누수 현상 [1]파일 다운로드1
12490정성태1/15/202119125.NET Framework: 1007. C# - foreach에서 열거 변수의 타입을 var로 쓰면 object로 추론하는 문제 [1]파일 다운로드1
12489정성태1/13/202123130.NET Framework: 1006. C# - DB에 저장한 텍스트의 (이모티콘을 비롯해) 유니코드 문자가 '?'로 보인다면? [1]
12488정성태1/13/202120626.NET Framework: 1005. C# - string 타입은 shallow copy일까요? deep copy일까요? [2]파일 다운로드1
12487정성태1/13/202119388.NET Framework: 1004. C# - GC Heap에 위치한 참조 개체의 주소를 알아내는 방법파일 다운로드1
12486정성태1/12/202122765.NET Framework: 1003. x64 환경에서 참조형의 기본 메모리 소비는 얼마나 될까요? [1]
12485정성태1/11/202121430Graphics: 38. C# - OpenCvSharp.VideoWriter에 BMP 파일을 1초씩 출력하는 예제 [2]파일 다운로드1
12484정성태1/9/202124687.NET Framework: 1002. C# - ReadOnlySequence<T> 소개파일 다운로드1
12483정성태1/8/202120369개발 환경 구성: 521. dotPeek - 훌륭한 역어셈블 소스 코드 생성 도구
12482정성태1/8/202122050.NET Framework: 1001. C# - 제네릭 타입/메서드에서 사용 시 경우에 따라 CS8377 컴파일 에러
12481정성태1/7/202121889.NET Framework: 1000. C# - CS8344 컴파일 에러: ref struct 타입의 사용 제한 메서드파일 다운로드1
12480정성태1/6/202124881.NET Framework: 999. C# - ArrayPool<T>와 MemoryPool<T> 소개파일 다운로드1
... [61]  62  63  64  65  66  67  68  69  70  71  72  73  74  75  ...