Support building on Linux #3311
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Work-in Progress
Changes to the build system to support building all targets on Linux. This mostly involved removing properties from
build.projthat artifically restricted what would be built based on the OS, and then filtering those changes down into all of the project files.Major Changes:
TFproperty is now used to explicitly decide what Target Frameworks to specify when building AKV and tests, and running tests.build.projproperties:IsEnabledWindowsTargetGroupTargetNetFxVersionTargetNetCoreVersionTestOSTestTargetOSTFGroupTFthen all Target Frameworks are built (net462, net8.0, net9.0).build.projtarget that implies .NET Framework, then just net462 is used.build.projtarget that implies .NET, then net8.0 and net9.0 are used.RunFunctionalTestsWindows,RunFunctionalTestsUnix,RunManualTestsWindows, andRunManualTestsUnixtargets now runs .NET tests only.RunFunctionalTestsWindowsNetFxandRunManualTestsWindowsNetFxtargets were added that run those .NET Framework tests on Windows.TFwhere appropriate.Internal Changes:
build.projtargets that imply a Target Framework use newBuildProjandTargetsNetFxproperties to control the downstream projects where necessary (i.e. AKV and test projects).<TargetFrameworks>, even if they only specify a single target framework.Directory.Build.propsfiles.Outstanding Issues:
BuildTeststarget still doesn't work (it didn't work before these changes). There is a problem building .NET and .NET Framework targets in parallel.