aspnet / KoreBuild

OBSOLETE REPO - see readme
Other
37 stars 23 forks source link

Build the sln file instead of individual project files #159

Closed natemcmaster closed 7 years ago

natemcmaster commented 7 years ago

Perf improvement: only builds each project once during the 'build-compile' target.

natemcmaster commented 7 years ago

Almost there: something in Korebuild is attempting to use obj/*.dll...I think.

CSC : error CS2012: Cannot open 'C:\dev\Universe\DependencyInjection\src\Microsoft.Extensions.DependencyInjection\obj\Debug\netstandard1.1\Microsoft.Extensions.DependencyInjection.dll' for writing -- 'The process cannot access the file 'C:\dev\Universe\DependencyInjection\src\Microsoft.Extensions.DependencyInjection\obj\Debug\netstandard1.1\Microsoft.Extensions.DependencyInjection.dll' because it is being used by another process.' [C:\dev\Universe\DependencyInjection\src\Microsoft.Extensions.DependencyInjection\Microsoft.Extensions.DependencyInjection.csproj] [C:\dev\Universe\DependencyInjection.build\targets\makefile.proj]

Doesn't happen when you call "dotnet build" on the solution, w/o korebuild

natemcmaster commented 7 years ago

Nvm, it's dotnet/sdk. https://github.com/dotnet/sdk/issues/739

natemcmaster commented 7 years ago

:up: :date: Removing the [blocked] label. The race condition in solution builds has been fixed.

natemcmaster commented 7 years ago

I added two changes to be aware of.

(1) the tool dependencies (Sake, NuGetPackageVerifier, and NETFrameworkReferenceAssemblies) restore into the regular nuget cache instead of into the .build folder (2) Update to CLI 1.0.0-rc4-004777

We'll need to update other repos. Any project that has multiple *.sln files or has projects in the solution file that doen't build with dotnet-CLI will need to be updated. Razor, MVC, and possibly others.

natemcmaster commented 7 years ago

cc @pakrym

pakrym commented 7 years ago

Wouldn't calling pack on each project try to rebuild everything again?

natemcmaster commented 7 years ago

At the moment yes it will build twice. This is an incremental step towards eliminating the Sake lifecycle. Some of our repos have custom packaging steps that we need to port to MSBuild.

This has the advantage of only rebuilding projects once during the pack phase. MSBuild will batch the builds during pack.

In a follow up PR, we can move even more into MSBuild so each project should only compile once per build.cmd run.

pakrym commented 7 years ago

👍 LGTM