Repository navigation
Support for BaseIntermediateOutputPath - #3527
Conversation
|
@matthid ?? |
|
This doesn't scale for more projects and introduces a perf regression, for example this most likey makes fake solution unworkable. While this is opt in I'm not a fan, in fact this pseudo fixes the issue until one with a huge solution needs this... Personally I wouldn't merge this. But it solves someone's problem. It will be an option practically nobody has enabled and therefore we will not catch regressions easily... Well that's my 2cents |
|
Do you have other ideas how to otherwise add support for BaseIntermediateOutputPath? |
|
Alternatively I'm thinking of finding |
MsBuild is a full programming evironment in xml, that approach is going to fail for anything but the simplest files. That's also why any "outside" parsing of project files will fail - you need msbuild. https://github.com/enricosada/dotnet-proj-info does use MsBuild and so should work correctly. My opinion is that the perf hit would be acceptable for anything but the largest solutions with literally hundreds of projects, the restore is cached anyway. But as always with performance, it needs to be timed and profiled. |
|
But that was exactly why I stopped with my PR :) |
Sadly this is not the problem. In fact the problem is that even while Microsoft caches its stuff Paket does not and basically last time I checked even if Microsoft cache was up to date it would still call |
|
Looking at this PR again, maybe it is acceptable: |
Do you mean restore with If so, shall I simply remove |
|
Like in 25b1e8b ? |
Yes, however please leave it in the argu arguments such that |
|
Ok - done. Added also a short note to docs |
424a468 to
6a8ab32
Compare
|
@matthid This is now ready for review |
821c4ce to
0c68e18
Compare
|
can you please merge with master? |
0c68e18 to
8730c47
Compare
|
There you go |
|
Seems CI is telling me I broke one existing integration tests - will investigate |
8730c47 to
b83e1d5
Compare
|
The integration test fails probably due to breaking change in |
|
Think I finally got it right |
|
thanks. this is released |
This is a follow up for #2642
I didn't go the "try to parse MSBuild variable for global restore" path, but instead decided to add option to disable paket global restore.
Given following
Directory.Build.propsfile:I read
PaketDisableGlobalRestoreproperty inPaket.Restore.targets:... <!-- Do a global restore if required --> <Exec Command='$(PaketBootStrapperCommand)' Condition=" '$(PaketBootstrapperStyle)' == 'classic' AND Exists('$(PaketBootStrapperExePath)') AND !(Exists('$(PaketExePath)'))" ContinueOnError="false" /> <Exec Command='$(PaketCommand) restore' Condition=" '$(PaketRestoreRequired)' == 'true' AND '$(PaketDisableGlobalRestore)' != 'true' " ContinueOnError="false" /> ...which basically makes I skip global restore.
Then for each project I pass
BaseIntermediateOutputPath:End game for my use case is I can build same project simultaneously on OSX and Windows and paket doesn't interfere.
I have few projects in solution, that's why skipping global restore optimisation is reasonable for me.
I'm aware my proposed solution isn't ideal, but at least it works for me and requires an explicit opt-in.
Please let me know what you think @forki @matthid @0x53A - if this is OK then I'll proceed with adding some docs and an integration test