<Target Name="GenerateSharedFramework"
Condition="'$(GenerateSharedFramework)' == 'true'">
<PropertyGroup>
- <SharedFrameworkIntermediateOutputPath>$(IntermediateOutputPath)sfx/</SharedFrameworkIntermediateOutputPath>
+ <!--
+ For the sfx intermediate path, use 'bin/obj/sfx/', without OSPlatformConfig (RID +
+ Release/Debug). This is to save on path chars, which are at a premium. if the Git clone root
+ is even a little deep, Windows max path is a big problem. Package caches are a particular
+ problem due to long IDs, long versions, and deep resource DLLs with big names.
+
+ The OSPlatformConfig is normally in the intermediate path because it allows building
+ different configurations without cleaning the repo in between. This can be valuable for dev
+ builds. Not including OSPlatformConfig is ok in this target because the intermediate dir is
+ always deleted before it's used.
+ -->
+ <SharedFrameworkIntermediateOutputPath>$(BaseIntermediateOutputPath)sfx/$(ShortFrameworkName)/</SharedFrameworkIntermediateOutputPath>
</PropertyGroup>
<!-- Delete layout directory and sfx NuGet cache to ensure freshness. -->
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
<!-- Don't error due to lack of runtime-specific deps, we're referencing those directly -->
<EnsureRuntimePackageDependencies>false</EnsureRuntimePackageDependencies>
- <!-- Use a project-local packages folder. 'p' rather than 'packages': stay under char limit. -->
+ <!-- Use a project-local packages folder. 'p', not 'packages': max path breathing room. -->
<RestorePackagesPath>$(IntermediateOutputPath)p</RestorePackagesPath>
<!-- Do not build or nor build in publish output or deps -->
<NoBuild>true</NoBuild>