ASP.NET Core 프로젝트를 명령행에서 빌드하는 방법
결론부터 말하면, NuGet restore 해주고 msbuild로 다음과 같이 빌드할 수 있습니다.
dotnet restore .\aspnet_core_proj
msbuild ".\aspnet_core_proj\aspnet_core_proj.csproj" /property:Platform=x64;Configuration=Release /t:Rebuild
또한 배포 본을 얻고 싶다면 다음과 같이 publish 옵션을 이용하면 됩니다.
dotnet publish .\aspnet_core_proj
만약 위의 과정에서 dotnet restore 없이 msbuild로 (빌드 서버에서) 빌드하면 다음과 같은 오류가 발생합니다.
D:\temp>msbuild ".\aspnet_core_proj\aspnet_core_proj.csproj" /property:Platform=AnyCPU;Configuration=Release /t:Rebuild
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 2018-01-03 오전 10:34:54.
Project "D:\aspnet_core_proj\aspnet_core_proj.csproj" on node 1 (Rebuild target(s)).
PreComputeCompileTypeScript:
C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe --noEmitOnError
PrepareForBuild:
Creating directory "bin\Release\net47\".
C:\Program Files\dotnet\sdk\2.0.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.PackageDependencyResolution.targets(323,5): error : Assets file 'D:\aspnet_core_proj\obj\project.assets.json' not found. Run a NuGet package restore to generate this file. [D:\aspnet_core_proj\fullnet_mvc_core.csproj]
Build continuing because "ContinueOnError" on the task "ReportAssetsLogMessages" is set to "ErrorAndContinue".
C:\Program Files\dotnet\sdk\2.0.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.PackageDependencyResolution.targets(165,5): error : Assets file 'D:\aspnet_core_proj\obj\project.assets.json' not found. Run a NuGet package restore to generate this file. [D:\aspnet_core_proj\fullnet_mvc_core.csproj]
Done Building Project "D:\aspnet_core_proj\aspnet_core_proj.csproj" (Rebuild target(s)) -- FAILED.
...[생략]...
그리고 이렇게도 오류가 발생하는 경우가 있습니다.
D:\temp>msbuild ".\aspnet_core_proj\aspnet_core_proj.csproj" /property:Platform=AnyCPU;Configuration=Release /t:Rebuild
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 2018-01-03 오전 10:54:43.
Project "D:\aspnet_core_proj\aspnet_core_proj.csproj" on node 1 (Rebu
ild target(s)).
C:\Program Files\dotnet\sdk\2.0.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.PackageDependencyResolution.targets(165,5): error : Assets file 'D:\aspnet_core_proj\obj\project.assets.json' doesn't have a target for '.NETFramework,Version=v4.7/win7-x86'. Ensure that restore has run and that you have included 'net47' in the TargetFrameworks for your project. You may also need to include 'win7-x86' in your project's RuntimeIdentifiers. [D:\aspnet_core_proj\aspnet_core_proj.csproj]
Done Building Project "D:\aspnet_core_proj\aspnet_core_proj.csproj" (Rebuild target(s)) -- FAILED.
...[생략]...
위의 원인은 아래의 글에서 설명한 오류 상황과 유사합니다.
.NET Core 오류 - 0x80131620 Unable to load DLL 'libuv'
; https://www.sysnet.pe.kr/2/0/11389
즉, Platform 설정을 AnyCPU로 하면 안 되고 다음과 같이 x86 또는 x64로 명시해야 합니다.
msbuild ".\aspnet_core_proj\aspnet_core_proj.csproj" /property:Platform=x64;Configuration=Release /t:Rebuild
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]