diff --git a/NuGet.config b/NuGet.config index eabdff8e9..d2a6d621d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -20,5 +20,14 @@ - + + + + + + + + + + diff --git a/README.md b/README.md index fa2dc039b..392931eb6 100644 --- a/README.md +++ b/README.md @@ -58,9 +58,10 @@ This repo also contains code to help you build the entire .NET product end-to-en # Build status -|All legs| -|:------:| -|[![Build Status](https://dev.azure.com/dnceng/internal/_apis/build/status/286)](https://dev.azure.com/dnceng/internal/_build?definitionId=286)| +Visibility|All legs| +|:------|:------| +|Public|[![Status](https://dev.azure.com/dnceng/public/_apis/build/status/176)](https://dev.azure.com/dnceng/public/_build?definitionId=176)| +|Microsoft Internal|[![Status](https://dev.azure.com/dnceng/internal/_apis/build/status/286)](https://dev.azure.com/dnceng/internal/_build?definitionId=286)| Installers and Binaries ----------------------- diff --git a/src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml index 236f22cb0..37c596b35 100644 --- a/src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml +++ b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml @@ -12,7 +12,11 @@ jobs: name: NetCore1ESPool-Internal demands: ImageOverride -equals Build.Ubuntu.1804.Amd64 variables: - _BuildConfig: Release + - name: _BuildConfig + value: Release + + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - group: DotNet-Source-Build-All-Orgs-Source-Access workspace: clean: all @@ -50,10 +54,26 @@ jobs: $officialBuildArgs \ $internalRuntimeDownloadArgs \ /p:DotNetPublishUsingPipelines=true \ - /p:ArcadeBuildTarball=true + /p:ArcadeBuildTarball=true \ + /p:AzDoPat=$(dn-bot-all-orgs-build-rw-code-rw) displayName: Create Tarball - - template: /src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml + - task: CopyFiles@2 + displayName: Prepare BuildLogs staging directory + inputs: + Contents: | + **/*.log + **/*.binlog + TargetFolder: '$(Build.StagingDirectory)/BuildLogs' + CleanTargetFolder: true + continueOnError: true + condition: succeededOrFailed() + + - publish: '$(Build.StagingDirectory)/BuildLogs' + artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) + displayName: Publish BuildLogs + continueOnError: true + condition: succeededOrFailed() - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: # Check if the tarball should be built now so the result can be used in the build tarball job condition. diff --git a/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml index afe11415a..f1e4f13de 100644 --- a/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml +++ b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml @@ -12,7 +12,11 @@ parameters: # The following parameters aren't expected to be passed in rather they are used for encapsulation # ----------------------------------------------------------------------------------------------- + centOS7Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-source-build-20210714125450-5d87b80 + centOS8Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-8-source-build-20211118190102-9355e7b + debian9Container: mcr.microsoft.com/dotnet-buildtools/prereqs:debian-stretch-20211001171226-047508b fedora33Container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-33-20210222183538-031e7d2 + ubuntu1804Container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-20210924170306-047508b poolInternal: name: NetCore1ESPool-Svc-Internal demands: ImageOverride -equals Build.Ubuntu.1804.Amd64 @@ -35,15 +39,38 @@ jobs: demands: ImageOverride -equals Build.Ubuntu.1804.Amd64 strategy: matrix: - Fedora33-Online: + CentOS7-Online: + _BootstrapPrep: true _BuildArch: x64 - _Container: ${{ parameters.fedora33Container }} + _Container: ${{ parameters.centOS7Container }} + _ExcludeOmniSharpTests: true _RunOnline: true - Fedora33-Offline: - _BuildArch: x64 - _Container: ${{ parameters.fedora33Container }} - _RunOnline: false - timeoutInMinutes: 240 + ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: + CentOS7-Offline: + _BootstrapPrep: true + _BuildArch: x64 + _Container: ${{ parameters.centOS7Container }} + _ExcludeOmniSharpTests: true + _RunOnline: false + CentOS8-Offline: + _BootstrapPrep: true + _BuildArch: x64 + _Container: ${{ parameters.centOS8Container }} + _ExcludeOmniSharpTests: false + _RunOnline: false + Fedora33-Offline: + _BootstrapPrep: false + _BuildArch: x64 + _Container: ${{ parameters.fedora33Container }} + _ExcludeOmniSharpTests: false + _RunOnline: false + Ubuntu1804-Offline: + _BootstrapPrep: true + _BuildArch: x64 + _Container: ${{ parameters.ubuntu1804Container }} + _ExcludeOmniSharpTests: false + _RunOnline: false + timeoutInMinutes: 300 workspace: clean: all @@ -54,10 +81,16 @@ jobs: parameters: buildArch: $(_BuildArch) container: $(_Container) + excludeOmniSharpTests: $(_ExcludeOmniSharpTests) prepScript: | set -x - docker run --rm -v ${{ parameters.tarballDir }}:/tarball -w /tarball $(_Container) ./prep.sh + customPrepArgs= + if [ '$(_BootstrapPrep)' = 'true' ]; then + customPrepArgs='--bootstrap' + fi + + docker run --rm -v ${{ parameters.tarballDir }}:/tarball -w /tarball $(_Container) ./prep.sh ${customPrepArgs} runOnline: $(_RunOnline) tarballDir: ${{ parameters.tarballDir }} tarballResourceId: ${{ parameters.tarballResourceId }} diff --git a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-build-tarball.yml b/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-build-tarball.yml index 30e55607d..2891bdc13 100644 --- a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-build-tarball.yml +++ b/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-build-tarball.yml @@ -10,6 +10,9 @@ parameters: # Container image to build within container: null + # Skip running the OmniSharp smoke-tests + excludeOmniSharpTests: false + # Script logic to prep the tarball for building prepScript: null @@ -63,12 +66,32 @@ steps: - script: | set -x - docker run --rm -v ${{ parameters.tarballDir }}:/tarball -w /tarball ${{ parameters.container }} ./build.sh --run-smoke-test ${{ parameters.additionalBuildArgs }} + docker run --rm -v ${{ parameters.tarballDir }}:/tarball -w /tarball -e excludeOmniSharpTests=${{ parameters.excludeOmniSharpTests}} ${{ parameters.container }} ./build.sh --run-smoke-test ${{ parameters.additionalBuildArgs }} displayName: Run Tests - - template: /src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml - parameters: - sourceFolder: ${{ parameters.tarballDir }} + # Don't use CopyFiles@2 as it encounters permissions issues because it indexes all files in the source directory graph. + - script: | + set -x + + targetFolder=$(Build.StagingDirectory)/BuildLogs/ + mkdir -p ${targetFolder} + + cd "${{ parameters.tarballDir }}" + find artifacts/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \; + find artifacts/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \; + find artifacts/prebuilt-report/ -exec cp {} --parents -t ${targetFolder} \; + find src/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \; + find src/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \; + find testing-smoke/logs -exec cp {} --parents -t ${targetFolder} \; + displayName: Prepare BuildLogs staging directory + continueOnError: true + condition: succeededOrFailed() + + - publish: '$(Build.StagingDirectory)/BuildLogs' + artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) + displayName: Publish BuildLogs + continueOnError: true + condition: succeededOrFailed() - publish: '${{ parameters.tarballDir }}/artifacts/${{ parameters.buildArch}}/Release/' artifact: $(Agent.JobName)_Artifacts diff --git a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml b/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml deleted file mode 100644 index f26933bc9..000000000 --- a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml +++ /dev/null @@ -1,25 +0,0 @@ -# Gathers and publishes the build logs for a source-build - -parameters: - # Folder to scan for source-build logs from - sourceFolder: $(Build.SourcesDirectory) - -steps: -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '${{ parameters.sourceFolder }}' - Contents: | - **/*.log - **/*.binlog - artifacts/prebuilt-report/* - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: succeededOrFailed() - -- publish: '$(Build.StagingDirectory)/BuildLogs' - artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) - displayName: Publish BuildLogs - continueOnError: true - condition: succeededOrFailed() diff --git a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs index 59f7eb499..9b6365dfc 100644 --- a/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs +++ b/src/SourceBuild/Arcade/src/Tarball_ReadSourceBuildIntermediateNupkgDependencies.cs @@ -3,6 +3,7 @@ using Microsoft.Build.Framework; using Microsoft.Build.Utilities; +using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; @@ -21,6 +22,11 @@ namespace Microsoft.DotNet.SourceBuild.Tasks [Required] public string SourceBuildIntermediateNupkgPrefix { get; set; } + /// + /// Convert any internal repo references to the public GitHub repos. + /// + public bool ConvertInternalRepos { get; set; } + /// /// The intermediate nupkg RID to use if any RID-specific intermediate nupkgs are required. /// If this parameter isn't specified, RID-specific intermediate nupkgs can't be used and @@ -88,6 +94,11 @@ namespace Microsoft.DotNet.SourceBuild.Tasks string dependencyVersion = d.Attribute("Version")?.Value; string uri = d.Element(CreateQualifiedName("Uri"))?.Value; + if (ConvertInternalRepos) + { + uri = ConvertInternalRepo(uri); + } + string sha = d.Element(CreateQualifiedName("Sha"))?.Value; string sourceBuildRepoName = sourceBuildElement.Attribute("RepoName")?.Value; @@ -137,5 +148,33 @@ namespace Microsoft.DotNet.SourceBuild.Tasks return !Log.HasLoggedErrors; } + + private string ConvertInternalRepo(string uri) + { + if (uri.StartsWith("https://dev.azure.com", StringComparison.OrdinalIgnoreCase)) + { + string[] repoParts = uri.Substring(uri.LastIndexOf('/')).Split('-', 2); + + if (repoParts.Length != 2) + { + Log.LogError($"Repo '{uri}' does not end with the expected - format"); + return null; + } + + string org = repoParts[0]; + string repo = repoParts[1]; + + // The internal Nuget.Client repo has suffix which needs to be accounted for. + const string trustedSuffix = "-Trusted"; + if (uri.EndsWith(trustedSuffix, StringComparison.OrdinalIgnoreCase)) + { + repo = repo.Substring(0, repo.Length - trustedSuffix.Length); + } + + uri = $"https://github.com/{org}/{repo}"; + } + + return uri; + } } } diff --git a/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets b/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets index 75fd838e8..9a49c3499 100644 --- a/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets +++ b/src/SourceBuild/Arcade/tools/SourceBuildArcadeTarball.targets @@ -19,6 +19,7 @@ $(TarballRootDir)src/ $(TarballRootDir)git-info/ quiet + true $(TarballSourceDir)$(SourceDir)eng/ $(TarballRepoSourceEngDir)Version.Details.xml -q + $(RepoUri.Replace('https://dev.azure.com', 'https://dn-bot:$(AzDoPat)@dev.azure.com')) @@ -202,7 +204,8 @@ + SourceBuildIntermediateNupkgRid="$(SourceBuildIntermediateNupkgRid)" + ConvertInternalRepos="$(ConvertInternalRepos)"> diff --git a/src/SourceBuild/tarball/content/build.sh b/src/SourceBuild/tarball/content/build.sh index 6379f0aee..dcdf29b89 100755 --- a/src/SourceBuild/tarball/content/build.sh +++ b/src/SourceBuild/tarball/content/build.sh @@ -155,11 +155,12 @@ echo "Found bootstrap SDK $SDK_VERSION, bootstrap Arcade $ARCADE_BOOTSTRAP_VERSI export DOTNET_CLI_TELEMETRY_OPTOUT=1 export NUGET_PACKAGES=$restoredPackagesDir/ -if [ "$alternateTarget" == "true" ]; then - "$CLI_ROOT/dotnet" $CLI_ROOT/sdk/$SDK_VERSION/MSBuild.dll "$SCRIPT_ROOT/build.proj" /bl:source-build-test.binlog /clp:v=m ${MSBUILD_ARGUMENTS[@]} "$@" -else - LogDateStamp=$(date +"%m%d%H%M%S") - $CLI_ROOT/dotnet $CLI_ROOT/sdk/$SDK_VERSION/MSBuild.dll /bl:$SCRIPT_ROOT/artifacts/log/Debug/BuildXPlatTasks_$LogDateStamp.binlog $SCRIPT_ROOT/tools-local/init-build.proj /t:PrepareOfflineLocalTools ${MSBUILD_ARGUMENTS[@]} "$@" +LogDateStamp=$(date +"%m%d%H%M%S") - $CLI_ROOT/dotnet $CLI_ROOT/sdk/$SDK_VERSION/MSBuild.dll /bl:$SCRIPT_ROOT/artifacts/log/Debug/Build_$LogDateStamp.binlog $SCRIPT_ROOT/build.proj ${MSBUILD_ARGUMENTS[@]} "$@" +if [ "$alternateTarget" == "true" ]; then + "$CLI_ROOT/dotnet" $CLI_ROOT/sdk/$SDK_VERSION/MSBuild.dll "$SCRIPT_ROOT/build.proj" /bl:$SCRIPT_ROOT/artifacts/log/Debug/BuildTests_$LogDateStamp.binlog /fileLoggerParameters:LogFile=$SCRIPT_ROOT/artifacts/logs/BuildTests_$LogDateStamp.log /clp:v=m ${MSBUILD_ARGUMENTS[@]} "$@" +else + $CLI_ROOT/dotnet $CLI_ROOT/sdk/$SDK_VERSION/MSBuild.dll /bl:$SCRIPT_ROOT/artifacts/log/Debug/BuildXPlatTasks_$LogDateStamp.binlog /fileLoggerParameters:LogFile=$SCRIPT_ROOT/artifacts/logs/BuildXPlatTasks_$LogDateStamp.log $SCRIPT_ROOT/tools-local/init-build.proj /t:PrepareOfflineLocalTools ${MSBUILD_ARGUMENTS[@]} "$@" + + $CLI_ROOT/dotnet $CLI_ROOT/sdk/$SDK_VERSION/MSBuild.dll /bl:$SCRIPT_ROOT/artifacts/log/Debug/Build_$LogDateStamp.binlog /fileLoggerParameters:LogFile=$SCRIPT_ROOT/artifacts/logs/Build_$LogDateStamp.log $SCRIPT_ROOT/build.proj ${MSBUILD_ARGUMENTS[@]} "$@" fi diff --git a/src/SourceBuild/tarball/content/eng/Versions.props b/src/SourceBuild/tarball/content/eng/Versions.props index 4701139f6..1925782b6 100644 --- a/src/SourceBuild/tarball/content/eng/Versions.props +++ b/src/SourceBuild/tarball/content/eng/Versions.props @@ -1,15 +1,5 @@ - - - 6 - 0 - 0-preview.6 - 100-preview.6 - $(MajorVersion).$(MinorVersion).$(RuntimePatchVersion) - $(MajorVersion).$(MinorVersion).$(RuntimePatchVersion) - $(MajorVersion).$(MinorVersion).$(SdkPatchVersion) - 0.1.0 diff --git a/src/SourceBuild/tarball/content/prep.sh b/src/SourceBuild/tarball/content/prep.sh index 9e749fc2b..e3225d309 100755 --- a/src/SourceBuild/tarball/content/prep.sh +++ b/src/SourceBuild/tarball/content/prep.sh @@ -118,7 +118,7 @@ if [ "$buildBootstrap" == "true" ]; then fi # Run restore on project to initiate download of bootstrap packages - $DOTNET_SDK_PATH/dotnet restore $workingDir/buildBootstrapPreviouslySB.csproj /bl /p:ArchiveDir="$SCRIPT_ROOT/packages/archive/" + $DOTNET_SDK_PATH/dotnet restore $workingDir/buildBootstrapPreviouslySB.csproj /bl:artifacts/prep/bootstrap.binlog /fileLoggerParameters:LogFile=artifacts/prep/bootstrap.log /p:ArchiveDir="$SCRIPT_ROOT/packages/archive/" # Remove working directory rm -rf $workingDir diff --git a/src/SourceBuild/tarball/content/repos/Directory.Build.targets b/src/SourceBuild/tarball/content/repos/Directory.Build.targets index f7bf1d2bd..05e685273 100644 --- a/src/SourceBuild/tarball/content/repos/Directory.Build.targets +++ b/src/SourceBuild/tarball/content/repos/Directory.Build.targets @@ -758,7 +758,7 @@ - + - - - - - - - - - - - diff --git a/src/SourceBuild/tarball/content/smoke-test.sh b/src/SourceBuild/tarball/content/smoke-test.sh index 2a0b789e6..d08484ef0 100755 --- a/src/SourceBuild/tarball/content/smoke-test.sh +++ b/src/SourceBuild/tarball/content/smoke-test.sh @@ -51,10 +51,13 @@ excludeWebNoHttpsTests=false excludeWebHttpsTests=false excludeLocalTests=false excludeOnlineTests=false +excludeOmniSharpTests=${excludeOmniSharpTests:-false} devCertsVersion="$DEV_CERTS_VERSION_DEFAULT" testingDir="$SCRIPT_ROOT/testing-smoke" cliDir="$testingDir/builtCli" -logFile="$testingDir/smoke-test.log" +logsDir="$testingDir/logs" +logFile="$logsDir/smoke-test.log" +omnisharpLogFile="$logsDir/omnisharp.log" restoredPackagesDir="$testingDir/packages" testingHome="$testingDir/home" archiveRestoredPackages=false @@ -78,6 +81,7 @@ function usage() { echo " --excludeWebHttpsTests don't run web project tests with https using dotnet-dev-certs" echo " --excludeLocalTests exclude tests that use local sources for nuget packages" echo " --excludeOnlineTests exclude test that use online sources for nuget packages" + echo " --excludeOmniSharpTests don't run the OmniSharp tests" echo " --devCertsVersion use dotnet-dev-certs instead of default $DEV_CERTS_VERSION_DEFAULT" echo " --prodConBlobFeedUrl override the prodcon blob feed specified in ProdConFeed.txt, removing it if empty" echo " --archiveRestoredPackages capture all restored packages to $archivedPackagesDir" @@ -136,6 +140,9 @@ while :; do --excludeonlinetests) excludeOnlineTests=true ;; + --excludeomnisharptests) + excludeOmniSharpTests=true + ;; --devcertsversion) shift devCertsVersion="$1" @@ -205,7 +212,7 @@ function doCommand() { binlogHttpsPart="https" fi - binlogPrefix="$testingDir/${projectDir}_${binlogOnlinePart}_${binlogHttpsPart}_" + binlogPrefix="$logsDir/${projectDir}_${binlogOnlinePart}_${binlogHttpsPart}_" binlog="${binlogPrefix}$1.binlog" echo " running $1" | tee -a "$logFile" @@ -618,7 +625,7 @@ function runOmniSharpTests() { "${dotnetCmd}" new $project popd - ./omnisharp/run -s "$(readlink -f hello-$project)" > omnisharp.log & + ./omnisharp/run -s "$(readlink -f hello-$project)" > "$omnisharpLogFile" & sleep 5 @@ -631,9 +638,9 @@ function runOmniSharpTests() { kill "$(pgrep -f "$(pwd)")" - cat omnisharp.log + cat "$omnisharpLogFile" - if grep ERROR omnisharp.log; then + if grep ERROR "$omnisharpLogFile"; then echo "test failed" exit 1 else @@ -701,6 +708,7 @@ if [ -e "$testingDir" ]; then fi mkdir -p "$testingDir" +mkdir -p "$logsDir" cd "$testingDir" # Create blank Directory.Build files to avoid traversing to source-build infra. @@ -768,6 +776,8 @@ fi runXmlDocTests -runOmniSharpTests +if [ "$excludeOmniSharpTests" == "false" ]; then + runOmniSharpTests +fi echo "ALL TESTS PASSED!" diff --git a/src/SourceBuild/tarball/content/tools-local/prebuilt-baseline.xml b/src/SourceBuild/tarball/content/tools-local/prebuilt-baseline.xml deleted file mode 100755 index da166e4f7..000000000 --- a/src/SourceBuild/tarball/content/tools-local/prebuilt-baseline.xml +++ /dev/null @@ -1,168 +0,0 @@ - - fedora.33-x64 - - src/arcade.a3377cccde8639089f99107e2ba5df2c8cbe6394/ - src/aspnetcore./ - src/clicommandlineparser.3198bf5660cad3dab85f5475bf1fda9688146e3f/ - src/command-line-api.5e855e911de7c56fe28400c4500e888fe2a3da8e/ - src/diagnostics.6f48c2ae749c29b687af0353e6c2a9590d7e3d22/ - src/fsharp./ - src/installer.c6ec4363003b18d8e587620baa36205b80ee3074/ - src/known-good-tests./ - src/known-good./ - src/linker.f2588193553431636b9853b0f87209fa395a72c5/ - src/msbuild./ - src/nuget.client./ - src/package-source-build/ - src/roslyn-analyzers./ - src/roslyn./ - src/runtime./ - src/runtime./ - src/sdk./ - src/source-build-reference-packages.36fb56afdf0ee2fb2e0833bdef98dfde12a0837b/ - src/source-build.3fb25b8db3bec654e37e71a5b2b7fde14444bc2f/ - src/sourcelink.4b584dbc392bb1aad49c2eb1ab84d8b489b6dccc/ - src/symreader.1968a003d845d119a9d38ac4daaeea22897f7daf/ - src/templating.3bc0d90f3e450f3e4ebda128081d091fb42968e3/ - src/test-templates.6898c1c70c2d14e9725ddab6e1ebe8084c4d7e27/ - src/vstest./ - src/xdt.6a46e7c886cdf499ba3433f665ab417be814135e/ - src/xliff-tasks.71c811561ad4dcf46825a5077fbcc668ab74754f/ - Tools/ - tools-local/tasks/ - artifacts/obj/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/UsageReport/ValidateUsageAgainstBaseline.cs b/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/UsageReport/ValidateUsageAgainstBaseline.cs index d96dbf8d0..6c80f2756 100644 --- a/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/UsageReport/ValidateUsageAgainstBaseline.cs +++ b/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/UsageReport/ValidateUsageAgainstBaseline.cs @@ -17,9 +17,6 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.UsageReport [Required] public string DataFile { get; set; } - [Required] - public string BaselineDataFile { get; set; } - [Required] public string OutputBaselineFile { get; set; } @@ -28,14 +25,25 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.UsageReport public bool AllowTestProjectUsage { get; set; } + public string BaselineDataFile { get; set; } + public override bool Execute() { var used = UsageData.Parse(XElement.Parse(File.ReadAllText(DataFile))); - var baseline = UsageData.Parse(XElement.Parse(File.ReadAllText(BaselineDataFile))); + + IEnumerable baselineUsages; + if (File.Exists(BaselineDataFile)) + { + baselineUsages = UsageData.Parse(XElement.Parse(File.ReadAllText(BaselineDataFile))).Usages; + } + else + { + baselineUsages = Enumerable.Empty(); + } Comparison diff = Compare( used.Usages.Select(u => u.GetIdentityWithoutRid()).Distinct(), - baseline.Usages.Select(u => u.GetIdentityWithoutRid()).Distinct()); + baselineUsages.Select(u => u.GetIdentityWithoutRid()).Distinct()); var report = new XElement("BaselineComparison"); diff --git a/src/redist/targets/GenerateMSIs.targets b/src/redist/targets/GenerateMSIs.targets index aaa36d067..541af9dd0 100644 --- a/src/redist/targets/GenerateMSIs.targets +++ b/src/redist/targets/GenerateMSIs.targets @@ -164,7 +164,7 @@ '$(SdkMSIInstallerFile)' ^ '$(WixRoot)' ^ '$(ToolsetBrandName)' ^ - '$(VersionPrefix)' ^ + '$(CliProductBandVersion)00' ^ '$(MsiVersion)' ^ '$(SDKBundleVersion)' ^ '$(Version)' ^