[Arpow Tarball] Add flag to build with online sources (#11091)

* Add SBRP packages to prev source-built

* Don't delete SBRP packages

* Add BuildWithOnlineSources flag

* Build tarball in CI with online sources

* Remove OfflineBuild / add BuildWithOnlineSources

* Add --online option to tarball build.sh

* Additional cleanup for tarball build

* Rename baseline file

* Update baseline

* Remove acquire-darc.proj

* Default DotNetBuildOffline to true

* Fix line endings in RemoveInternetSources

* Update src/SourceBuild/Arcade/eng/common/templates/steps/source-build-run-tarball-build.yml

Co-authored-by: Michael Simons <msimons@microsoft.com>

Co-authored-by: Michael Simons <msimons@microsoft.com>
This commit is contained in:
Dan Seefeldt 2021-07-09 16:42:42 -05:00 committed by GitHub
parent 7e1379da2c
commit 5048e0f143
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 232 additions and 1708 deletions

View file

@ -19,7 +19,8 @@ steps:
- script: |
set -x
./build.sh
./build.sh \
--online
workingDirectory: ${{ parameters.sourceFolder }}
displayName: Build Tarball
condition: and(${{ parameters.condition }}, succeeded())

View file

@ -87,8 +87,8 @@
<InnerBuildArgs>$(InnerBuildArgs) /p:EnableSourceControlManagerQueries=false</InnerBuildArgs>
<InnerBuildArgs>$(InnerBuildArgs) /p:EnableSourceLink=false</InnerBuildArgs>
<InnerBuildArgs>$(InnerBuildArgs) /p:DeterministicSourcePaths=false</InnerBuildArgs>
<InnerBuildArgs >$(InnerBuildArgs) /p:DotNetBuildOffline=true</InnerBuildArgs>
<InnerBuildArgs Condition=" '$(DotNetPackageVersionPropsPath)' != '' ">$(InnerBuildArgs) /p:DotNetPackageVersionPropsPath=$(DotNetPackageVersionPropsPath)</InnerBuildArgs>
<InnerBuildArgs Condition=" '$(DotNetBuildOffline)' != '' ">$(InnerBuildArgs) /p:DotNetBuildOffline=$(DotNetBuildOffline)</InnerBuildArgs>
</PropertyGroup>
<ItemGroup>

View file

@ -92,7 +92,6 @@
<PropertyGroup>
<BaseOutputPath>$(ArtifactsDir)</BaseOutputPath>
<ClonedSubmoduleDirectory Condition="'$(ClonedSubmoduleDirectory)' == ''">$(BaseOutputPath)src/</ClonedSubmoduleDirectory>
<ClonedSubmoduleGitRootDirectory Condition="'$(ClonedSubmoduleGitRootDirectory)' == ''">$(ProjectDir).git/modules/src/</ClonedSubmoduleGitRootDirectory>
<ToolsDir>$(ProjectDir)Tools/</ToolsDir>
<ToolPackageExtractDir>$(ToolsDir)source-built/</ToolPackageExtractDir>
@ -123,8 +122,7 @@
<SourceBuiltAspNetCoreRuntime>$(LocalBlobStorageRoot)aspnetcore/Runtime/</SourceBuiltAspNetCoreRuntime>
<RestoreSourcePropsPath>$(IntermediatePath)RestoreSources.props</RestoreSourcePropsPath>
<PackageVersionPropsPath>$(IntermediatePath)PackageVersions.props</PackageVersionPropsPath>
<GennedPackageVersionPropsPath Condition="'$(OfflineBuild)' == 'true'">$(IntermediatePath)GennedPackageVersions.props</GennedPackageVersionPropsPath>
<GennedPackageVersionPropsPath Condition="'$(OfflineBuild)' != 'true'">$(IntermediatePath)PackageVersions.props</GennedPackageVersionPropsPath>
<GennedPackageVersionPropsPath>$(IntermediatePath)GennedPackageVersions.props</GennedPackageVersionPropsPath>
<LoggingDir>$(BaseOutputPath)logs/</LoggingDir>
<MSBuildDebugPathTargetDir>$(BaseOutputPath)msbuild-debug/</MSBuildDebugPathTargetDir>
<RoslynDebugPathTargetDir>$(BaseOutputPath)roslyn-debug/</RoslynDebugPathTargetDir>
@ -149,8 +147,7 @@
<ProdConManifestFile>$(PackageReportDir)prodcon-build.xml</ProdConManifestFile>
<PoisonedReportFile>$(PackageReportDir)poisoned.txt</PoisonedReportFile>
<ConflictingPackageReportDir>$(BaseOutputPath)conflict-report/</ConflictingPackageReportDir>
<OfflinePrebuiltBurndownDataFile>$(PackageReportDir)PrebuiltBurndownData-offline.csv</OfflinePrebuiltBurndownDataFile>
<OnlinePrebuiltBurndownDataFile>$(PackageReportDir)PrebuiltBurndownData-online.csv</OnlinePrebuiltBurndownDataFile>
<PrebuiltBurndownDataFile>$(PackageReportDir)PrebuiltBurndownData.csv</PrebuiltBurndownDataFile>
<ReferencePackagesBaseDir>$(IntermediatePath)reference-packages/</ReferencePackagesBaseDir>
<TextOnlyPackageBaseDir>$(IntermediatePath)text-only-packages/</TextOnlyPackageBaseDir>
<ExternalTarballsDir>$(IntermediatePath)external-tarballs/</ExternalTarballsDir>
@ -159,19 +156,15 @@
See corresponding change in build-source-tarball.sh to copy reference-packages & external-tarballs
from source-build bin dir to tarball packages/reference dir & packages/archive.
-->
<ExternalTarballsDir Condition="'$(OfflineBuild)' == 'true'">$(ProjectDir)packages/archive/</ExternalTarballsDir>
<ReferencePackagesBaseDir Condition="'$(OfflineBuild)' == 'true'">$(ProjectDir)packages/reference/</ReferencePackagesBaseDir>
<TextOnlyPackageBaseDir Condition="'$(OfflineBuild)' == 'true'">$(ProjectDir)packages/text-only/</TextOnlyPackageBaseDir>
<ExternalTarballsDir>$(ProjectDir)packages/archive/</ExternalTarballsDir>
<ReferencePackagesBaseDir>$(ProjectDir)packages/reference/</ReferencePackagesBaseDir>
<TextOnlyPackageBaseDir>$(ProjectDir)packages/text-only/</TextOnlyPackageBaseDir>
<ReferencePackagesDir>$(ReferencePackagesBaseDir)packages/</ReferencePackagesDir>
<SourceBuiltArtifactsTarballName>Private.SourceBuilt.Artifacts</SourceBuiltArtifactsTarballName>
<SourceBuiltArtifactsTarballUrl>https://dotnetcli.azureedge.net/source-built-artifacts/assets/</SourceBuiltArtifactsTarballUrl>
<ArchiveArtifactsTextFileName>archiveArtifacts.txt</ArchiveArtifactsTextFileName>
<ArchiveArtifactsTextFile>$(ExternalTarballsDir)$(ArchiveArtifactsTextFileName)</ArchiveArtifactsTextFile>
<BaselineDataFile>$(ToolsLocalDir)prebuilt-baseline-</BaselineDataFile>
<OfflineBaselineDataFile>$(BaselineDataFile)offline.xml</OfflineBaselineDataFile>
<OnlineBaselineDataFile>$(BaselineDataFile)online.xml</OnlineBaselineDataFile>
<BaselineDataFile Condition="'$(OfflineBuild)' == 'true'">$(OfflineBaselineDataFile)</BaselineDataFile>
<BaselineDataFile Condition="'$(OfflineBuild)' != 'true'">$(OnlineBaselineDataFile)</BaselineDataFile>
<BaselineDataFile>$(ToolsLocalDir)prebuilt-baseline.xml</BaselineDataFile>
<!--Exclude tests that are failing for test enabled projects like - corefx -->
<TestExclusionsDir>$(ProjectDir)test/exclusions/</TestExclusionsDir>
</PropertyGroup>

View file

@ -10,47 +10,6 @@
</ItemGroup>
</Target>
<Target Name="AcquireDarc"
Condition="
'$(OfflineBuild)' != 'true' and
'$(SkipAcquireDarc)' != 'true'"
Inputs="$(MSBuildThisFileDirectory)tools-local\acquire-darc\acquire-darc.proj"
Outputs="$(CompletedSemaphorePath)AcquireDarc.complete">
<MSBuild
Projects="$(MSBuildThisFileDirectory)tools-local\acquire-darc\acquire-darc.proj"
Targets="AcquireDarcCore" />
<WriteLinesToFile File="$(CompletedSemaphorePath)AcquireDarc.complete" Overwrite="true" />
</Target>
<Target Name="GetCommonDarcCloneCommand" DependsOnTargets="AcquireDarc">
<PropertyGroup>
<IgnoredRepos>$(IgnoredRepos);https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</IgnoredRepos>
<IgnoredRepos>$(IgnoredRepos);https://dev.azure.com/devdiv/DevDiv/_git/DotNet-Trusted</IgnoredRepos>
<IgnoredRepos>$(IgnoredRepos);https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Trusted</IgnoredRepos>
<IgnoredRepos>$(IgnoredRepos);https://dnceng@dev.azure.com/dnceng/internal/_git/dotnet-optimization</IgnoredRepos>
<IgnoredRepos>$(IgnoredRepos);https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup</IgnoredRepos>
<IgnoredRepos>$(IgnoredRepos);https://github.com/dotnet/source-build-reference-packages</IgnoredRepos>
<DarcCloneReposFolder Condition="'$(DarcCloneReposFolder)' == ''">$(ClonedSubmoduleDirectory)</DarcCloneReposFolder>
<DarcCloneArguments>$(DarcCloneArguments) --git-dir-folder $(ClonedSubmoduleGitRootDirectory)</DarcCloneArguments>
<DarcCloneArguments>$(DarcCloneArguments) --include-toolset</DarcCloneArguments>
<DarcCloneArguments>$(DarcCloneArguments) --ignore-repos "$(IgnoredRepos)"</DarcCloneArguments>
<DarcCloneArguments>$(DarcCloneArguments) --debug</DarcCloneArguments>
<!-- required so Darc doesn't throw an error for missing auth -->
<AzDoPat Condition="'$(AzDoPat)' == ''">bogus</AzDoPat>
<DarcCloneArguments>$(DarcCloneArguments) --azdev-pat $(AzDoPat)</DarcCloneArguments>
<DarcCloneArguments>$(DarcCloneArguments) --github-pat bogus</DarcCloneArguments>
<!-- depth 0 should be sufficient for us since we explictly declare all our dependencies -->
<DarcCloneArguments>$(DarcCloneArguments) --depth 0</DarcCloneArguments>
<DarcCloneCommand>$(DotNetCliToolDir)dotnet $(DarcDll) clone $(DarcCloneArguments)</DarcCloneCommand>
</PropertyGroup>
</Target>
<Import Condition="'$(SkipArcadeSdkImport)' != 'true'" Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />
<Target Name="GetProdConBlobFeedUrl">

View file

@ -47,59 +47,6 @@
<RemoveDir Directories="$(BaseOutputPath)" />
</Target>
<Target Name="OutputArchiveArtifactsTextFile"
AfterTargets="Build"
Condition="'$(OfflineBuild)' != 'true' and '$(OS)' != 'Windows_NT'" >
<ItemGroup>
<ArtifactUrls Include="$(ReferencePackagesTarballUrl)$(ReferencePackagesTarballName).$(PrivateSourceBuildReferencePackagesPackageVersion).tar.gz" />
<ArtifactUrls Include="$(SourceBuiltArtifactsTarballUrl)$(SourceBuiltArtifactsTarballName).$(PrivateSourceBuiltArtifactsPackageVersion).tar.gz" />
</ItemGroup>
<WriteLinesToFile
File="$(ArchiveArtifactsTextFile)"
Lines="@(ArtifactUrls)"
Overwrite="true" />
</Target>
<Target Name="DownloadSourceBuildReferencePackages"
AfterTargets="Build"
Condition="'$(OfflineBuild)' != 'true' and '$(OS)' != 'Windows_NT' and '$(SkipDownloadingReferencePackages)' != 'true'"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(CompletedSemaphorePath)DownloadSourceBuildReferencePackages.complete" >
<PropertyGroup Condition="'$(DownloadSourceBuildReferencePackagesTimeoutSeconds)' == ''">
<DownloadSourceBuildReferencePackagesTimeoutSeconds>N/A</DownloadSourceBuildReferencePackagesTimeoutSeconds>
</PropertyGroup>
<DownloadFileSB
SourceUrl="$(ReferencePackagesTarballUrl)$(ReferencePackagesTarballName).$(PrivateSourceBuildReferencePackagesPackageVersion).tar.gz"
DestinationFolder="$(ExternalTarballsDir)"
TimeoutSeconds="$(DownloadSourceBuildReferencePackagesTimeoutSeconds)" />
<WriteLinesToFile File="$(CompletedSemaphorePath)DownloadSourceBuildReferencePackages.complete" Overwrite="true" />
</Target>
<Target Name="DownloadSourceBuiltArtifacts"
AfterTargets="Build"
Condition="
'$(OfflineBuild)' != 'true' and
'$(OS)' != 'Windows_NT' and
'$(SkipDownloadingPreviouslySourceBuiltPackages)' != 'true' and
'$(PrivateSourceBuiltArtifactsPackageVersion)' != ''"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(CompletedSemaphorePath)DownloadSourceBuiltArtifacts.complete" >
<PropertyGroup Condition="'$(DownloadSourceBuiltArtifactsTimeoutSeconds)' == ''">
<DownloadSourceBuiltArtifactsTimeoutSeconds>N/A</DownloadSourceBuiltArtifactsTimeoutSeconds>
</PropertyGroup>
<DownloadFileSB
SourceUrl="$(SourceBuiltArtifactsTarballUrl)$(SourceBuiltArtifactsTarballName).$(PrivateSourceBuiltArtifactsPackageVersion).tar.gz"
DestinationFolder="$(ExternalTarballsDir)"
TimeoutSeconds="$(DownloadSourceBuiltArtifactsTimeoutSeconds)" />
<WriteLinesToFile File="$(CompletedSemaphorePath)DownloadSourceBuiltArtifacts.complete" Overwrite="true" />
</Target>
<!-- After building, generate a prebuilt usage report. -->
<Target Name="ReportPrebuiltUsage"
AfterTargets="Build"
@ -119,7 +66,7 @@
<Target Name="ReportPoisonUsage"
AfterTargets="Build"
Condition="'$(EnablePoison)' == 'true' and '$(OfflineBuild)' == 'true'"
Condition="'$(EnablePoison)' == 'true'"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(CompletedSemaphorePath)ReportPoisonUsage.complete" >
<ItemGroup>
@ -137,11 +84,8 @@
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(CompletedSemaphorePath)GeneratePrebuiltBurndownData.complete" >
<WriteUsageBurndownData RootDirectory="$(ProjectDir)"
PrebuiltBaselineFile="$(OnlineBaselineDataFile)"
OutputFilePath="$(OnlinePrebuiltBurndownDataFile)" />
<WriteUsageBurndownData RootDirectory="$(ProjectDir)"
PrebuiltBaselineFile="$(OfflineBaselineDataFile)"
OutputFilePath="$(OfflinePrebuiltBurndownDataFile)" />
PrebuiltBaselineFile="$(BaselineDataFile)"
OutputFilePath="$(PrebuiltBurndownDataFile)" />
<WriteLinesToFile File="$(CompletedSemaphorePath)GeneratePrebuiltBurndownData.complete" Overwrite="true" />
</Target>

View file

@ -5,7 +5,7 @@ IFS=$'\n\t'
usage() {
echo "usage: $0 [options]"
echo "options:"
echo " --with-ref-packages <dir> use the specified directory of reference packages"
echo " --online build using online sources"
echo " --with-packages <dir> use the specified directory of previously-built packages"
echo " --with-sdk <dir> use the SDK in the specified directory for bootstrapping"
echo "use -- to send the remaining arguments to MSBuild"
@ -14,7 +14,7 @@ usage() {
SCRIPT_ROOT="$(cd -P "$( dirname "$0" )" && pwd)"
MSBUILD_ARGUMENTS=("/p:OfflineBuild=true" "/flp:v=detailed")
MSBUILD_ARGUMENTS=("/flp:v=detailed")
CUSTOM_REF_PACKAGES_DIR=''
CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR=''
alternateTarget=false
@ -31,6 +31,9 @@ while :; do
alternateTarget=true
MSBUILD_ARGUMENTS+=( "/t:RunSmokeTest" )
;;
--online)
MSBUILD_ARGUMENTS+=( "/p:BuildWithOnlineSources=true")
;;
--with-packages)
CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR="$(cd -P "$2" && pwd)"
if [ ! -d "$CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR" ]; then

View file

@ -1,11 +0,0 @@
<Project>
<Target Name="AllowWorkInProgressPrebuilts"
BeforeTargets="ForbidPrebuilts">
<ItemGroup>
<!-- Example: $(TarballPrebuiltPackageDir)microsoft.dotnet.web.itemtemplates.5.0.2.nupkg -->
<AllowedPrebuiltPackageFile />
</ItemGroup>
</Target>
</Project>

View file

@ -1,63 +0,0 @@
<Project>
<!--
Below are some destructive cleanup steps that we optionally perform during tarball creation.
These are used in CI to avoid filling up disk space, when we have weak build agents. These steps
are not generally suitable for dev scenarios because they delete intermediate data that might
have taken quite a while to download or create, and Git data that may be in-progress work.
-->
<!--
We need to keep artifacts/src/<repo>/.git around for sourcelink metadata but we can delete just
about everything else, Darc will pull it from the copy in .git/modules. This list of extensions
is everything over 6MB or so.
-->
<Target Name="DestructiveIntermediateCleanLargeFilesFromClonedSource"
BeforeTargets="AddTarballSource">
<ItemGroup>
<LargeSrcFileExtension Include="
.dll;
.exe;
.pdb;
.mdb;
.zip;
.so;
.o;
.a;
.tar.gz;
.vb;
.il;
.xlf;
.cpp;
.txt;
.map;
.md;
.fs;
.h;
.c;
.js;
.json;
.ildump;
.resx;
.xml;
.css;
.nupkg" />
<LargeSrcFiles Include="$(ClonedSubmoduleDirectory)*%(LargeSrcFileExtension.Identity)" />
</ItemGroup>
<Message Importance="High" Text="Removing large and unnecessary source files from $(ClonedSubmoduleDirectory)" />
<Delete Files="@(LargeSrcFiles)" />
</Target>
<Target Name="DestructiveIntermediateCleanTarballSource"
AfterTargets="AddTarballSource">
<!-- Now we don't need .git/modules/src anymore. -->
<RemoveDir Directories="$(ClonedSubmoduleGitRootDirectory)" />
<!-- we don't build CoreCLR tests right now and they have a lot of them - ~380MB -->
<Exec Command="rm -rf '$(TarballSourceDir)coreclr.'*'/tests'" />
</Target>
</Project>

View file

@ -1,136 +0,0 @@
<Project>
<!--
Remove a list of packages that end up in the tarball's prebuilts folder but are not actually
needed. This is typically because part of the build are turned off for DotNetBuildOffline but
not DotNetBuildFromSource.
-->
<Target Name="RemoveTarballKnownExtraPrebuilts"
DependsOnTargets="GetTarballDirProps">
<ItemGroup>
<KnownExtraPrebuiltFile Include="
$(TarballPrebuiltPackageDir)microbuild.core.0.2.0.nupkg;
$(TarballPrebuiltPackageDir)microbuild.core.sentinel.1.0.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.bcl.asyncinterfaces.1.1.1.nupkg;
$(TarballPrebuiltPackageDir)microsoft.bcl.asyncinterfaces.5.0.0-rc.1.20451.14.nupkg;
$(TarballPrebuiltPackageDir)microsoft.build.framework.15.3.409.nupkg;
$(TarballPrebuiltPackageDir)microsoft.build.framework.15.4.8.nupkg;
$(TarballPrebuiltPackageDir)microsoft.build.tasks.core.15.3.409.nupkg;
$(TarballPrebuiltPackageDir)microsoft.build.utilities.core.15.3.409.nupkg;
$(TarballPrebuiltPackageDir)microsoft.build.utilities.core.15.4.8.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.analyzers.2.6.1.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.analyzers.2.9.6.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.analyzers.3.0.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.bannedapianalyzers.3.3.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.common.2.9.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.common.3.4.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.common.3.8.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.csharp.2.9.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.csharp.3.4.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.csharp.3.8.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.csharp.codestyle.3.8.0-2.20414.4.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.csharp.codestyle.3.8.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.visualbasic.codestyle.3.8.0-2.20414.4.nupkg;
$(TarballPrebuiltPackageDir)microsoft.codeanalysis.visualbasic.codestyle.3.8.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.dotnet.arcade.sdk.5.0.0-beta.20426.4.nupkg;
$(TarballPrebuiltPackageDir)microsoft.dotnet.signtool.5.0.0-beta.20426.4.nupkg;
$(TarballPrebuiltPackageDir)microsoft.extensions.dependencymodel.3.1.6.nupkg;
$(TarballPrebuiltPackageDir)microsoft.extensions.dependencyinjection.5.0.0.nupkg;
$(TarballPrebuiltPackageDir)microsoft.netcore.app.host.linux-x64.3.1.7.nupkg;
$(TarballPrebuiltPackageDir)microsoft.symboluploader.build.task.1.1.141804.nupkg;
$(TarballPrebuiltPackageDir)netstandard.library.1.6.0.nupkg;
$(TarballPrebuiltPackageDir)nuget.commands.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.common.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.configuration.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.credentials.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.dependencyresolver.core.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.frameworks.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.librarymodel.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.packaging.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.projectmodel.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.protocol.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)nuget.versioning.5.6.0-preview.2.6489.nupkg;
$(TarballPrebuiltPackageDir)runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.4.0.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.data.sqlclient.sni.4.7.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.io.compression.4.1.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.io.compression.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.net.http.4.0.1.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.net.http.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.net.security.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.security.cryptography.4.0.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.security.cryptography.apple.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg;
$(TarballPrebuiltPackageDir)runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg;
$(TarballPrebuiltPackageDir)runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg;
$(TarballPrebuiltPackageDir)sn.1.0.0.nupkg;
$(TarballPrebuiltPackageDir)system.collections.immutable.5.0.0-preview.8.20407.11.nupkg;
$(TarballPrebuiltPackageDir)system.composition.1.0.31.nupkg;
$(TarballPrebuiltPackageDir)system.composition.attributedmodel.1.0.31.nupkg;
$(TarballPrebuiltPackageDir)system.composition.convention.1.0.31.nupkg;
$(TarballPrebuiltPackageDir)system.composition.hosting.1.0.31.nupkg;
$(TarballPrebuiltPackageDir)system.composition.runtime.1.0.31.nupkg;
$(TarballPrebuiltPackageDir)system.composition.typedparts.1.0.31.nupkg;
$(TarballPrebuiltPackageDir)system.io.pipelines.5.0.0.nupkg;
$(TarballPrebuiltPackageDir)system.reflection.metadata.5.0.0-preview.8.20407.11.nupkg;
$(TarballPrebuiltPackageDir)system.runtime.compilerservices.unsafe.5.0.0-rc.1.20451.14.nupkg;
$(TarballPrebuiltPackageDir)system.security.cryptography.pkcs.5.0.0.nupkg;
$(TarballPrebuiltPackageDir)system.text.encodings.web.4.7.1.nupkg;
$(TarballPrebuiltPackageDir)system.text.encodings.web.5.0.0-rc.1.20451.14.nupkg;
$(TarballPrebuiltPackageDir)system.text.json.4.7.2.nupkg;
$(TarballPrebuiltPackageDir)system.text.json.5.0.0-rc.1.20451.14.nupkg;
$(TarballPrebuiltPackageDir)system.text.json.5.0.0.nupkg;
$(TarballPrebuiltPackageDir)system.valuetuple.4.3.0.nupkg;
$(TarballPrebuiltPackageDir)system.xml.xpath.xmldocument.4.0.1.nupkg;
$(TarballPrebuiltPackageDir)vswhere.2.6.7.nupkg;
$(TarballPrebuiltPackageDir)xlifftasks.1.0.0-beta.20420.1.nupkg;
" />
<!--
Remove source-link packages to throw away tooling that Arcade imports unconditionally in the
production build.
-->
<KnownExtraPrebuiltFile Include="
$(TarballPrebuiltPackageDir)microsoft.build.tasks.git.1.0.0-beta2-*.nupkg;
$(TarballPrebuiltPackageDir)microsoft.sourcelink.common.1.0.0-beta2-*.nupkg;
$(TarballPrebuiltPackageDir)microsoft.sourcelink.github.1.0.0-beta2-*.nupkg;
$(TarballPrebuiltPackageDir)microsoft.sourcelink.vsts.git.1.0.0-beta2-*.nupkg;
" />
<!--
Remove packages that show up when dotnet/sdk restores Microsoft.Build/15.7.179 in net472
configuration. These are not present in the source-build-reference-packages version of
Microsoft.Build/15.7.179, so we know it's safe to ignore. In the production build, we aren't
using SBRP yet, so we need to remove them here.
-->
<KnownExtraPrebuiltFile Include="
$(TarballPrebuiltPackageDir)microsoft.visualstudio.setup.configuration.interop.1.16.30.nupkg;
$(TarballPrebuiltPackageDir)system.threading.tasks.dataflow.4.5.24.nupkg;
" />
</ItemGroup>
<Delete Files="@(KnownExtraPrebuiltFile)" />
</Target>
</Project>

View file

@ -1,99 +0,0 @@
<Project>
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="ReplaceTextInFile" />
<!--
Find text-only nupkgs and decompose them into text files to include in the tarball as source
code. This simplifies maintenance by removing the need to put a new version of these files in
dotnet/source-build-reference-packages for potentially every single servicing release.
'dotnet new' template packages are a prominent example of text-only packages that change often.
-->
<Target Name="AddAllUnpackedTextOnlyPackageSource"
DependsOnTargets="GetTarballDirProps"
BeforeTargets="AddTarballPackages">
<PropertyGroup>
<TarballUnpackedTextOnlyPackageSourceDir>$([MSBuild]::NormalizeDirectory('$(TarballRootDir)', 'packages', 'text-only'))</TarballUnpackedTextOnlyPackageSourceDir>
</PropertyGroup>
<!--
Find .nupkg files in package cache in order to locate the extraction directory, then filter
which files are copied to the tarball to exclude the nupkg itself and unnecessary metadata.
-->
<ItemGroup>
<TextOnlyPrebuiltNupkgFile Include="
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.itemtemplates.2.1.*.nupkg;
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.projecttemplates.2.1.2.1.*.nupkg;
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.spa.projecttemplates.2.1.2.1.*.nupkg;
$(ProjectDir)packages\restored\**\microsoft.dotnet.common.itemtemplates.3.1.*.nupkg;
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.itemtemplates.3.1.*.nupkg;
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.projecttemplates.3.1.3.1.*.nupkg;
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.spa.projecttemplates.3.1.3.1.*.nupkg;
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.itemtemplates.5.0.*.nupkg;
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.projecttemplates.5.0.5.0.*.nupkg;
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.spa.projecttemplates.5.0.5.0.*.nupkg;
" />
<!-- Make prebuilt nupkg copy logic ignore these text-only nupkgs. -->
<RefOnlyPackageFilename Include="@(TextOnlyPrebuiltNupkgFile->'%(Filename)')" />
<TextOnlyPrebuiltNupkgProject
Include="$(MSBuildProjectFullPath)"
Properties="
TextOnlyPackageRootDir=%(TextOnlyPrebuiltNupkgFile.RootDir)%(TextOnlyPrebuiltNupkgFile.Directory)" />
</ItemGroup>
<MSBuild
Projects="@(TextOnlyPrebuiltNupkgProject)"
Targets="AddUnpackedTextOnlyPackageSource">
<Output TaskParameter="TargetOutputs" ItemName="TarballCopyFile" />
</MSBuild>
</Target>
<Target Name="AddUnpackedTextOnlyPackageSource"
DependsOnTargets="GetTarballDirProps"
Returns="@(TarballCopyFile)">
<PropertyGroup>
<PackageVersionDirFile>$([System.IO.Path]::GetDirectoryName('$(TextOnlyPackageRootDir)'))</PackageVersionDirFile>
<PackageIdDirFile>$([System.IO.Path]::GetDirectoryName('$(PackageVersionDirFile)'))</PackageIdDirFile>
<PackageVersion>$([System.IO.Path]::GetFileName('$(PackageVersionDirFile)'))</PackageVersion>
<PackageId>$([System.IO.Path]::GetFileName('$(PackageIdDirFile)'))</PackageId>
<PackageIntermediateDir>$([MSBuild]::NormalizeDirectory('$(TextOnlyPackageBaseDir)', '$(PackageId)', '$(PackageVersion)'))</PackageIntermediateDir>
</PropertyGroup>
<MakeDir Directories="$(PackageIntermediateDir)" />
<ItemGroup>
<NuspecFile Include="$(TextOnlyPackageRootDir)*.nuspec" />
<PackableNuspecFile Include="@(NuspecFile->'$(PackageIntermediateDir)%(Filename)%(Extension)')" />
</ItemGroup>
<Error Condition="@(NuspecFile->Count()) != 1" Text="Expected exactly one nuspec file in $(TextOnlyPackageRootDir)" />
<Copy SourceFiles="@(NuspecFile)" DestinationFiles="@(PackableNuspecFile)" />
<ReplaceTextInFile
InputFile="@(PackableNuspecFile)"
OldText="&lt;/package&gt;"
NewText="&lt;files&gt;&lt;file src=&quot;.\**\*&quot;/&gt;&lt;/files&gt;&lt;/package&gt;" />
<ItemGroup>
<TextOnlyPackageContentFile
Include="
$(TextOnlyPackageRootDir)**;
$(PackageIntermediateDir)**"
Exclude="
@(NuspecFile);
$(TextOnlyPackageRootDir)**\.nupkg.metadata;
$(TextOnlyPackageRootDir)**\.signature.p7s;
$(TextOnlyPackageRootDir)**\*.nupkg;
$(TextOnlyPackageRootDir)**\*.nupkg.sha512" />
<TarballCopyFile
Include="@(TextOnlyPackageContentFile)"
RelativeDestination="packages\text-only\$(PackageId)\$(PackageVersion)\%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup>
</Target>
</Project>

View file

@ -1,386 +0,0 @@
<Project>
<Target Name="PackSourceBuildTarball"
Condition="'$(PackSourceBuildTarball)' == 'true'"
DependsOnTargets="
GetTarballDirProps;
AddTarballSource;
AddTarballSourcelinkMetadata;
AddTarballTools;
AddTarballPackages;
AddTarballExternalTarballs;
AddTarballCommitInfo;
AddTarballLeakDetection;
CopyTarballFiles;
RemoveTarballKnownExtraPrebuilts;
ForbidPrebuilts;
"
AfterTargets="Execute" />
<Import Project="SourceBuild.Tarball.KnownExtraPrebuilts.targets" />
<Import Project="SourceBuild.Tarball.AllowedPrebuilts.targets" />
<Import Project="SourceBuild.Tarball.TextOnlyPrebuilts.targets" />
<Import
Project="SourceBuild.Tarball.DestructiveCleanup.targets"
Condition="'$(DestructiveIntermediateClean)' == 'true'"/>
<Target Name="GetTarballDirProps">
<PropertyGroup>
<TarballRootDir>$([MSBuild]::NormalizeDirectory('$(TarballRoot)'))</TarballRootDir>
<TarballSourceDir>$([MSBuild]::NormalizeDirectory('$(TarballRootDir)', 'src'))</TarballSourceDir>
<TarballPrebuiltPackageDir>$([MSBuild]::NormalizeDirectory('$(TarballRootDir)', 'packages', 'prebuilt'))</TarballPrebuiltPackageDir>
</PropertyGroup>
</Target>
<Target Name="AddTarballSource"
DependsOnTargets="
GetTarballDirProps;
GetCommonDarcCloneCommand"
Condition="'$(SkipAddTarballSource)' != 'true'">
<!--
Use Git to put sources in the tarball. This ensure it's fresh, without having to clean and
reset the working dir. This helps preserve diagnostic information if the tarball build doesn't
work.
-->
<Exec
Command="git --work-tree=&quot;$(TarballRootDir)&quot; checkout HEAD -- src"
WorkingDirectory="$(ProjectDir)" />
<!--
Now re-uberclone into the tarball src directory. Since we reuse the .gitdirs, this shouldn't
hit the network at all.
-->
<Exec
Command="$(DarcCloneCommand) --repos-folder $(TarballSourceDir)"
WorkingDirectory="$(ProjectDir)" />
<Message Importance="High" Text="Darc clone into tarball complete." />
<ItemGroup>
<TarballSrcBinaryExtension Include="
.dll;
.Dll;
.exe;
.pdb;
.mdb;
.zip;
.nupkg" />
<TarballSrcBinaryToRemove Include="$(TarballSourceDir)**\*%(TarballSrcBinaryExtension.Identity)" />
<!-- Runtime coreclr and installer parts have empty placeholder PDB files. Keep them. -->
<TarballSrcBinaryToRemove Remove="
$(TarballSourceDir)runtime*\src\coreclr\src\.nuget\**\*%(TarballSrcBinaryExtension.Identity);
$(TarballSourceDir)runtime*\src\installer\pkg\**\*%(TarballSrcBinaryExtension.Identity)" />
</ItemGroup>
<Delete Files="@(TarballSrcBinaryToRemove)" />
<ItemGroup>
<MasterRepositoryDirToRemove
Include="$([System.IO.Directory]::GetDirectories('$(TarballSourceDir)'))" />
<!-- Keep known source dirs and non-master repo dirs. -->
<MasterRepositoryDirToRemove Remove="$(TarballSourceDir)reference-assemblies" />
<MasterRepositoryDirToRemove Remove="$(TarballSourceDir)netcorecli-fsc" />
<MasterRepositoryDirToRemove Remove="$(TarballSourceDir)package-source-build" />
<MasterRepositoryDirToRemove
Remove="@(MasterRepositoryDirToRemove)"
Condition="
$([System.Text.RegularExpressions.Regex]::IsMatch(
'%(Identity)',
'\.[A-Fa-f0-9]{40}$'))" />
</ItemGroup>
<RemoveDir Directories="@(MasterRepositoryDirToRemove)" />
</Target>
<Target Name="AddTarballSourcelinkMetadata">
<ItemGroup>
<ArtifactsGitDir Include="$(ClonedSubmoduleDirectory)**\.git\**\*" />
</ItemGroup>
<Copy
SourceFiles="@(ArtifactsGitDir)"
DestinationFiles="@(ArtifactsGitDir -> '$(TarballSourceDir)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<Target Name="AddTarballTools">
<ItemGroup>
<TarballRootToolFile
Include="
$(ProjectDir)*.proj;
$(ProjectDir)*.props;
$(ProjectDir)*.targets;
$(ProjectDir)global.json;
$(ProjectDir)DarcVersion.txt;
$(ProjectDir)ProdConFeed.txt;
$(ProjectDir)smoke-test*;
$(ProjectDir)eng\**;
$(ProjectDir)keys\**;
$(ProjectDir)patches\**;
$(ProjectDir)scripts\**;
$(ProjectDir)repos\**;
$(ProjectDir)tools-local\**;
"
Exclude="
$(ProjectDir)tools-local\arcade-services\**;
$(ProjectDir)tools-local\tasks\*\bin\**;
$(ProjectDir)tools-local\tasks\*\obj\**;
" />
<TarballRootToolFile
Include="$(DotNetCliToolDir)**"
Exclude="
$(DotNetCliToolDir)shared\2.1.0\**;
$(DotNetCliToolDir)tools\**;
"
Condition=" '$(CustomDotNetSdkDir)' == '' AND '$(PackBaseTarball)' != 'true' "/>
<TarballCopyFile
Include="@(TarballRootToolFile)"
RelativeDestination="$([MSBuild]::MakeRelative('$(ProjectDir)', '%(Identity)'))" />
<TarballGitInfoFile Include="$(ProjectDir)artifacts\git-info\**" />
<TarballCopyFile
Include="@(TarballGitInfoFile)"
RelativeDestination="git-info\%(RecursiveDir)%(Filename)%(Extension)" />
<TarballBootstrappingToolFile Include="$(ProjectDir)support\tarball\tool-bootstrapping/**;" />
<TarballCopyFile
Include="@(TarballBootstrappingToolFile)"
RelativeDestination="tool-bootstrapping\%(RecursiveDir)%(Filename)%(Extension)" />
<TarballCopyFile
Include="$(ProjectDir)support/tarball/build.sh"
RelativeDestination="build.sh" />
<TarballCopyFile
Condition=" '$(PackBaseTarball)' == 'true' "
Include="$(ProjectDir)support/tarball/prep.sh"
RelativeDestination="prep.sh" />
<!--
When building an internal build, the main smoke-test nuget config has authenticated sources
in it to generate a full set of smoke-test-prereqs. This isn't necessary in the tarball
because we have those smoke-test-prereqs, but we hit authentication errors nonetheless. Copy
a trimmed down nuget.config in this case.
TODO: Automatically trim down the main nuget.config.
-->
<TarballCopyFile
Condition="Exists('$(ProjectDir)support\tarball\smoke-testNuGet.Config')"
Include="$(ProjectDir)support\tarball\smoke-testNuGet.Config"
RelativeDestination="smoke-testNuGet.Config" />
<!-- Setup package version props to include both source-built and running PackageVersions.props -->
<TarballCopyFile
Include="$(ProjectDir)support\tarball\PackageVersions.props"
RelativeRoot="artifacts/obj/$(Platform)/Release/" />
</ItemGroup>
</Target>
<Target Name="AddTarballPackages">
<!-- Find reference-packages to exclude from tarball prebuilts...-->
<ItemGroup Condition="'$(CustomRefPackagesDir)' != ''">
<SourceBuildReferencePackageFile Include="$(CustomRefPackagesDir)**\*.nupkg" />
</ItemGroup>
<Exec
Command="tar -tf $(ExternalTarballsDir)Private.SourceBuild.ReferencePackages.*.tar.gz | tr '[:upper:]' '[:lower:]'"
ConsoleToMsBuild="true"
StandardOutputImportance="low"
Condition="'$(CustomRefPackagesDir)' == ''">
<Output TaskParameter="ConsoleOutput" ItemName="SourceBuildReferencePackageFile" />
</Exec>
<ItemGroup>
<SourceBuildReferencePackageFilename Include="@(SourceBuildReferencePackageFile -> '%(Filename)')" />
</ItemGroup>
<!-- Find previously source-built packages to exclude from tarball prebuilts... -->
<ItemGroup Condition="'$(CustomPreviouslySourceBuiltPackagesDir)' != ''">
<PreviouslySourceBuiltPackageFile Include="$(CustomPreviouslySourceBuiltPackagesDir)**\*.nupkg" />
</ItemGroup>
<ItemGroup>
<!-- Use a downloaded previously source built artifacts tar.gz if specified. -->
<PrivateSourceBuiltArtifactsTarGzFile
Condition="'$(PrivateSourceBuiltArtifactsPackageVersion)' != ''"
Include="$(ExternalTarballsDir)Private.SourceBuilt.Artifacts.*.tar.gz" />
<!-- If not using previously source built artifacts tar.gz, use Production build output. -->
<PrivateSourceBuiltArtifactsTarGzFile
Condition="'$(PrivateSourceBuiltArtifactsPackageVersion)' == ''"
Include="$(OutputPath)$(SourceBuiltArtifactsTarballName).*.tar.gz" />
</ItemGroup>
<Error
Text="Expected one PrivateSourceBuiltArtifactsTarGzFile item, got @(PrivateSourceBuiltArtifactsTarGzFile->Count())"
Condition="@(PrivateSourceBuiltArtifactsTarGzFile->Count()) != 1" />
<Exec
Command="tar -tf @(PrivateSourceBuiltArtifactsTarGzFile) | tr '[:upper:]' '[:lower:]'"
ConsoleToMsBuild="true"
StandardOutputImportance="low"
Condition="'$(CustomPreviouslySourceBuiltPackagesDir)' == ''">
<Output TaskParameter="ConsoleOutput" ItemName="PreviouslySourceBuiltPackageFile" />
</Exec>
<ItemGroup>
<PreviouslySourceBuiltPackageFilename Include="@(PreviouslySourceBuiltPackageFile -> '%(Filename)')" />
</ItemGroup>
<ItemGroup>
<!-- Find source-built packages to exclude from tarball prebuilts... -->
<SourceBuiltPackageFile Include="$(SourceBuiltPackagesPath)**\*.nupkg" />
<SourceBuiltPackageFilename Include="@(SourceBuiltPackageFile -> '%(Filename)')" />
<!-- Find prebuilts and smoke-test prebuilts to copy (with exclusions). -->
<PrebuiltPackageFile
Include="
$(ProjectDir)packages\restored\**\*.nupkg;
$(LocalNuGetPackagesRoot)**\*.nupkg;
" />
<PrebuiltPackageFile
RelativeDestination="packages\prebuilt\%(Filename)%(Extension)" />
<SmokeTestPackageFile
Include="$(ProjectDir)testing-smoke\smoke-test-packages\**\*.nupkg"
RelativeRoot="packages\smoke-test-packages\" />
<!--
Set up filename-based items, in order to filter out some packages that aren't necessary as
prebuilts, or are generated/acquired another way.
-->
<IncludedPrebuiltPackageCandidate Include="@(PrebuiltPackageFile)" />
<!--
For internal builds, all smoke-test packages should be kept. For external builds, they can
be restored during smoke-test execution from public sources, so can be pruned.
-->
<IncludedPrebuiltPackageFile Include="@(SmokeTestPackageFile)" Condition="'$(VSS_NUGET_EXTERNAL_FEED_ENDPOINTS)' != ''" />
<IncludedPrebuiltPackageCandidate Include="@(SmokeTestPackageFile)" Condition="'$(VSS_NUGET_EXTERNAL_FEED_ENDPOINTS)' == ''" />
<IncludedPrebuiltPackageFilename
Include="@(IncludedPrebuiltPackageCandidate -> '%(Filename)')"
OriginalIdentity="%(Identity)" />
<IncludedPrebuiltPackageFilename Remove="
@(SourceBuiltPackageFilename);
@(SourceBuildReferencePackageFilename);
@(PreviouslySourceBuiltPackageFilename);
@(RefOnlyPackageFilename);
" />
<IncludedPrebuiltPackageFile
Include="@(IncludedPrebuiltPackageFilename -> '%(OriginalIdentity)')" />
<!-- Add prebuilt packages to tarball. -->
<TarballCopyFile Include="@(IncludedPrebuiltPackageFile)" />
</ItemGroup>
</Target>
<Target Name="AddTarballExternalTarballs"
DependsOnTargets="AddTarballPackages">
<ItemGroup>
<ExternalTarballFile
Condition=" '$(PackBaseTarball)' != 'true' "
Include="$(ExternalTarballsDir)*.tar.gz"
RelativeRoot="packages\archive\" />
<!-- If not using previously source built artifacts tar.gz, use Production build output. -->
<ExternalTarballFile
Condition=" '$(PrivateSourceBuiltArtifactsPackageVersion)' == '' AND '$(PackBaseTarball)' != 'true' "
Include="@(PrivateSourceBuiltArtifactsTarGzFile)"
RelativeRoot="packages\archive\" />
<ExternalTarballFile
Condition=" '$(PackBaseTarball)' == 'true' "
Include="$(ArchiveArtifactsTextFile)"
RelativeRoot="packages\archive\" />
<TarballCopyFile Include="@(ExternalTarballFile);" />
</ItemGroup>
</Target>
<!--
Record commits for the source-build repo and all submodules, to aid in reproducibility...
-->
<Target Name="AddTarballCommitInfo"
Condition="'$(SkipAddTarballCommitInfo)' != 'true'">
<PropertyGroup>
<SourceBuildInfoFile>$(TarballRootDir)source-build-info.txt</SourceBuildInfoFile>
</PropertyGroup>
<Exec
Command="(
echo 'source-build:';
echo ' '%24(git rev-parse HEAD)' . ('%24(git describe --always HEAD)')';
echo ''
echo 'submodules:'
echo %24(git submodule status --recursive)
) > $(SourceBuildInfoFile)"
WorkingDirectory="$(ProjectDir)"
StandardOutputImportance="low" />
</Target>
<Target Name="AddTarballLeakDetection"
Condition="'$(IncludeLeakDetection)' == 'true'"
DependsOnTargets="CopyTarballFiles">
<PropertyGroup>
<LeakDetectionProjectFile>$(ProjectDir)tools-local\tasks\Microsoft.DotNet.SourceBuild.Tasks.LeakDetection\Microsoft.DotNet.SourceBuild.Tasks.LeakDetection.csproj</LeakDetectionProjectFile>
</PropertyGroup>
<MSBuild
Projects="$(LeakDetectionProjectFile)"
Targets="Restore"
Properties="
RestoreSources=$(SourceBuiltPackagesPath)%3B$(TarballRootDir)packages/prebuilt%3bhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public%40Local/nuget/v3/index.json;
DotNetPackageVersionPropsPath=$(PackageVersionPropsPath)"/>
<MSBuild
Projects="$(LeakDetectionProjectFile)"
Targets="Publish"
Properties="
OutputPath=$(TarballRootDir)tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/;
DotNetPackageVersionPropsPath=$(PackageVersionPropsPath)"/>
</Target>
<Target Name="CopyTarballFiles">
<ItemGroup>
<TarballCopyFile
Condition="
'%(TarballCopyFile.RelativeDestination)' == '' and
'%(TarballCopyFile.RelativeRoot)' != ''"
RelativeDestination="%(TarballCopyFile.RelativeRoot)%(TarballCopyFile.RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup>
<Copy
SourceFiles="@(TarballCopyFile)"
DestinationFiles="@(TarballCopyFile -> '$(TarballRootDir)%(RelativeDestination)')" />
</Target>
<!-- Check for any remaining prebuilts... -->
<Target Name="ForbidPrebuilts"
Condition="'$(SkipPrebuiltEnforcement)' != 'true'">
<ItemGroup>
<!--
'Exclude' is an escape hatch for prebuilts, but none are allowed as of writing this target.
If necessary, define a target in a separate targets file (to avoid clutter) that sets up the
exclusion items and runs with BeforeTargets="ForbidPrebuilts".
-->
<ForbiddenPrebuiltPackageFile
Include="$(TarballPrebuiltPackageDir)**\*.nupkg"
Exclude="@(AllowedPrebuiltPackageFile)" />
</ItemGroup>
<PropertyGroup Condition="'@(ForbiddenPrebuiltPackageFile)' != ''">
<PrebuiltErrorText>Detected forbidden prebuilts. They must be removed, or explicitly allowed (see target for details):</PrebuiltErrorText>
<PrebuiltErrorText>$(PrebuiltErrorText)%0A@(ForbiddenPrebuiltPackageFile -> '%(Identity)', '%0A')</PrebuiltErrorText>
</PropertyGroup>
<Error Text="$(PrebuiltErrorText)" Condition="'$(PrebuiltErrorText)' != ''" />
</Target>
</Project>

View file

@ -11,8 +11,7 @@
<PropertyGroup>
<SourceDirectory Condition="'$(SourceDirectory)' == ''">$(RepositoryName)</SourceDirectory>
<ProjectDirectory Condition="'$(ProjectDirectory)' == '' and '$(OfflineBuild)' != 'true'">$(ClonedSubmoduleDirectory)$(SourceDirectory).$(GitCommitHash)/</ProjectDirectory>
<ProjectDirectory Condition="'$(ProjectDirectory)' == '' and '$(OfflineBuild)' == 'true'">$(SubmoduleDirectory)$(SourceDirectory).$(GitCommitHash)/</ProjectDirectory>
<ProjectDirectory Condition="'$(ProjectDirectory)' == ''">$(SubmoduleDirectory)$(SourceDirectory).$(GitCommitHash)/</ProjectDirectory>
<MinimalConsoleLogOutput Condition="'$(MinimalConsoleLogOutput)' == ''">true</MinimalConsoleLogOutput>
<RepoConsoleLogFile>$(LoggingDir)$(RepositoryName).log</RepoConsoleLogFile>
<RedirectRepoOutputToLog Condition="'$(MinimalConsoleLogOutput)' == 'true'">&gt;&gt; $(RepoConsoleLogFile) 2&gt;&amp;1</RedirectRepoOutputToLog>
@ -41,19 +40,17 @@
<!-- A human-readable description of what's building and why. -->
<PropertyGroup>
<ProjectBuildReason>'$(RepositoryName)'</ProjectBuildReason>
<ProjectBuildReason Condition="'$(OfflineBuild)' != 'true' AND '$(ArchiveDownloadedPackages)' == 'true'">$(ProjectBuildReason) to produce tarball</ProjectBuildReason>
<ProjectBuildReason Condition="'$(OfflineBuild)' == 'true'">$(ProjectBuildReason) in tarball</ProjectBuildReason>
<ProjectBuildReason>'$(RepositoryName) in tarball'</ProjectBuildReason>
</PropertyGroup>
<ItemGroup>
<EnvironmentVariables Include="DotNetBuildFromSource=true" />
<EnvironmentVariables Include="DotNetPackageVersionPropsPath=$(PackageVersionPropsPath)" />
<EnvironmentVariables Include="DotNetRestorePackagesPath=$(PackagesDir)" />
<EnvironmentVariables Include="DotNetBuildOffline=true" Condition="'$(OfflineBuild)' == 'true'" />
<EnvironmentVariables Include="DotNetBuildOffline=true" />
<!-- Ensure the SDK (Core-SDK/Installer) doesn't add an online source. -->
<EnvironmentVariables Include="AddDotnetfeedProjectSource=false" Condition="'$(OfflineBuild)' == 'true'" />
<EnvironmentVariables Include="AddDotnetfeedProjectSource=false" />
<!-- Arcade tools.sh picks up DotNetCoreSdkDir, but we can pass DOTNET_INSTALL_DIR directly. -->
<EnvironmentVariables Include="DOTNET_INSTALL_DIR=$(DotNetCliToolDir)" />
@ -134,8 +131,7 @@
</ItemGroup>
<PropertyGroup>
<ArcadeBootstrapDir Condition="'$(OfflineBuild)' != 'true'">$(PackagesDir)</ArcadeBootstrapDir>
<ArcadeBootstrapDir Condition="'$(OfflineBuild)' == 'true'">$(ArcadeBootstrapPackageDir)</ArcadeBootstrapDir>
<ArcadeBootstrapDir>$(ArcadeBootstrapPackageDir)</ArcadeBootstrapDir>
<ArcadeBootstrapVersion>$(ARCADE_BOOTSTRAP_VERSION)</ArcadeBootstrapVersion>
</PropertyGroup>

View file

@ -1,6 +1,6 @@
<Project InitialTargets="SetNuGetPackagesEnvironment">
<ItemGroup Condition="'$(OfflineBuild)' == 'true'">
<ItemGroup>
<EnvironmentVariables Include="LatestCommit=$(GitCommitHash)" />
<EnvironmentVariables Include="OfficialBuildId=$(OfficialBuildId)" />
</ItemGroup>
@ -54,7 +54,7 @@
<!-- Source override arguments -->
<PropertyGroup Condition="'$(SourceOverrideRepoApiImplemented)' == 'true'">
<RepoApiArgs>$(RepoApiArgs) /p:DotNetRestoreSourcePropsPath=$(RestoreSourcePropsPath)</RepoApiArgs>
<RepoApiArgs Condition="'$(OfflineBuild)' == 'true'">$(RepoApiArgs) /p:DotNetBuildOffline=true</RepoApiArgs>
<RepoApiArgs>$(RepoApiArgs) /p:DotNetBuildOffline=true</RepoApiArgs>
</PropertyGroup>
<!-- Output placement arguments -->
<PropertyGroup Condition="'$(OutputPlacementRepoApiImplemented)' == 'true'">
@ -165,28 +165,25 @@
<NuGetConfigFiles Include="$(NuGetConfigFile)" />
</ItemGroup>
<!-- TODO: Don't remove these sources now. Need a switch for building to check prebuilts.
Currently, tarball build allows online restore sources.
See https://github.com/dotnet/source-build/issues/2255 -->
<!-- RemoveInternetSourcesFromNuGetConfig
<RemoveInternetSourcesFromNuGetConfig
NuGetConfigFile="%(NuGetConfigFiles.Identity)"
OfflineBuild="$(OfflineBuild)"
KeepFeedPrefixes="@(KeepFeedPrefixes)" /-->
BuildWithOnlineSources="$(BuildWithOnlineSources)"
KeepFeedPrefixes="@(KeepFeedPrefixes)" />
<AddSourceToNuGetConfig NuGetConfigFile="%(NuGetConfigFiles.Identity)"
SourceName="prebuilt"
SourcePath="$(PrebuiltPackagesPath)"
Condition="'$(OfflineBuild)' == 'true'" />
/>
<AddSourceToNuGetConfig NuGetConfigFile="%(NuGetConfigFiles.Identity)"
SourceName="previously-source-built"
SourcePath="$(PrebuiltSourceBuiltPackagesPath)"
Condition="'$(OfflineBuild)' == 'true'" />
/>
<AddSourceToNuGetConfig NuGetConfigFile="%(NuGetConfigFiles.Identity)"
SourceName="reference-packages"
SourcePath="$(ReferencePackagesDir)"
Condition="'$(OfflineBuild)' == 'true'" />
/>
<AddSourceToNuGetConfig NuGetConfigFile="%(NuGetConfigFiles.Identity)"
SourceName="source-built"
@ -362,9 +359,9 @@
<ItemGroup>
<_DotNetRestoreSources Include="$(ExtraRestoreSourcePath)" Condition="'$(ExtraRestoreSourcePath)' != ''"/>
<_DotNetRestoreSources Include="$(SourceBuiltPackagesPath)" />
<_DotNetRestoreSources Include="$(ReferencePackagesDir)" Condition="'$(OfflineBuild)' == 'true'"/>
<_DotNetRestoreSources Include="$(PrebuiltPackagesPath)" Condition="'$(OfflineBuild)' == 'true'"/>
<_DotNetRestoreSources Include="$(PrebuiltSourceBuiltPackagesPath)" Condition="'$(OfflineBuild)' == 'true'"/>
<_DotNetRestoreSources Include="$(ReferencePackagesDir)"/>
<_DotNetRestoreSources Include="$(PrebuiltPackagesPath)"/>
<_DotNetRestoreSources Include="$(PrebuiltSourceBuiltPackagesPath)"/>
<PreviouslySourceBuiltPackages Include="$(SourceBuiltPackagesPath)*.nupkg"
Exclude="$(SourceBuiltPackagesPath)*.symbols.nupkg" />
<_AdditionalAssetDirs Include="$(SourceBuiltToolsetDir)" Condition="Exists('$(SourceBuiltToolsetDir)')" />
@ -696,7 +693,7 @@
<SourceBuiltPackageFiles Include="$(SourceBuiltBlobFeedDir)**/*.nupkg" />
<SourceBuiltPackageFiles Include="$(PrebuiltSourceBuiltPackagesPath)*.nupkg" />
<ReferencePackageFiles Condition="'$(OfflineBuild)' == 'true'" Include="$(ReferencePackagesDir)**/*.nupkg" />
<ReferencePackageFiles Include="$(ReferencePackagesDir)**/*.nupkg" />
<!-- Check all RIDs from all restored Microsoft.NETCore.Platforms packages. -->
<PlatformsRuntimeJsonFiles Include="$(LocalNuGetPackagesRoot)*/microsoft.netcore.platforms/*/runtime.json" />
@ -710,8 +707,7 @@
<ItemGroup>
<!-- This file is a resource tracked by Git, not generated by restore. Ignore false positive. -->
<IgnoredProjectAssetsJsonFiles Include="$(ClonedSubmoduleDirectory)nuget.client*/test/NuGet.Core.Tests/NuGet.Build.Tasks.Pack.Test/compiler/resources/project.assets.json" Condition="'$(OfflineBuild)' != 'true'" />
<IgnoredProjectAssetsJsonFiles Include="$(SubmoduleDirectory)nuget.client*/test/NuGet.Core.Tests/NuGet.Build.Tasks.Pack.Test/compiler/resources/project.assets.json" Condition="'$(OfflineBuild)' == 'true'" />
<IgnoredProjectAssetsJsonFiles Include="$(SubmoduleDirectory)nuget.client*/test/NuGet.Core.Tests/NuGet.Build.Tasks.Pack.Test/compiler/resources/project.assets.json"/>
</ItemGroup>
<WritePackageUsageData

View file

@ -39,7 +39,7 @@
and packaged into source-built artifacts for 6.0.
See https://github.com/dotnet/source-build/issues/2285 -->
<Target Name="UsePreviouslySourceBuiltNuGet"
Condition="'$(OfflineBuild)' == 'true' AND 'true' == 'false' "
Condition=" 'true' == 'false' "
BeforeTargets="RepoBuild">
<ItemGroup>
<PreviouslySourceBuiltNuGetPackageFile Include="$(PrebuiltSourceBuiltPackagesPath)NuGet.Packaging.*.nupkg" />

View file

@ -39,8 +39,8 @@
<NuGetConfigFile>$(ProjectDirectory)NuGet.config</NuGetConfigFile>
<EnvironmentRestoreSources>$(SourceBuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(OfflineBuild)' == 'true'">$(EnvironmentRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(OfflineBuild)' != 'true'">$(EnvironmentRestoreSources)%3Bhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public%40Local/nuget/v3/index.json</EnvironmentRestoreSources>
<EnvironmentRestoreSources>$(EnvironmentRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(BuildWithOnlineSources)' == 'true'">$(EnvironmentRestoreSources)%3Bhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public%40Local/nuget/v3/index.json</EnvironmentRestoreSources>
</PropertyGroup>
<ItemGroup>

View file

@ -57,7 +57,7 @@
<DependencyVersionInputRepoApiImplemented>true</DependencyVersionInputRepoApiImplemented>
<EnvironmentExternalRestoreSources>$(SourceBuiltPackagesPath)</EnvironmentExternalRestoreSources>
<EnvironmentExternalRestoreSources Condition="'$(OfflineBuild)' == 'true'">$(EnvironmentExternalRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentExternalRestoreSources>
<EnvironmentExternalRestoreSources>$(EnvironmentExternalRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentExternalRestoreSources>
<!-- This project builds zips, not NuGet packages. -->
<SkipEnsurePackagesCreated>true</SkipEnsurePackagesCreated>

View file

@ -35,8 +35,8 @@
<GlobalJsonFile>$(ProjectDirectory)global.json</GlobalJsonFile>
<EnvironmentRestoreSources>$(SourceBuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(OfflineBuild)' == 'true'">$(EnvironmentRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(OfflineBuild)' != 'true'">$(EnvironmentRestoreSources)%3Bhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public%40Local/nuget/v3/index.json</EnvironmentRestoreSources>
<EnvironmentRestoreSources>$(EnvironmentRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(BuildWithOnlineSources)' == 'true'">$(EnvironmentRestoreSources)%3Bhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public%40Local/nuget/v3/index.json</EnvironmentRestoreSources>
</PropertyGroup>
<ItemGroup>
@ -68,14 +68,13 @@
but the NuGet resolver seems flaky so we're using our resolver instead. We only have access to
the nupkg ahead of time when building a tarball, so only enable this workaround then.
-->
<ItemGroup Condition="'$(OfflineBuild)' == 'true'">
<ItemGroup>
<CentralPackageVersionsSdkOverride Include="Microsoft.Build.CentralPackageVersions" Group="CENTRAL_PACKAGE_VERSIONS" />
<UseSourceBuiltSdkOverride Include="@(CentralPackageVersionsSdkOverride)" />
</ItemGroup>
<Target Name="ExtractCentralPackageVersionsSdkPackage"
BeforeTargets="SetSourceBuiltSdkOverrides"
Condition="'$(OfflineBuild)' == 'true'"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(RepoCompletedSemaphorePath)ExtractCentralPackageVersionsSdkPackage.complete">
<ItemGroup>

View file

@ -5,8 +5,7 @@
<RepoApiImplemented>false</RepoApiImplemented>
<ProjectDirectory>$(SubmoduleDirectory)$(RepositoryName)/</ProjectDirectory>
<SkipEnsurePackagesCreated>true</SkipEnsurePackagesCreated>
<IncludedPackageVersionPropsFile Condition="'$(OfflineBuild)' != 'true'">$(PackageVersionPropsPath)</IncludedPackageVersionPropsFile>
<IncludedPackageVersionPropsFile Condition="'$(OfflineBuild)' == 'true'">$(GennedPackageVersionPropsPath)</IncludedPackageVersionPropsFile>
<IncludedPackageVersionPropsFile>$(GennedPackageVersionPropsPath)</IncludedPackageVersionPropsFile>
</PropertyGroup>
<ItemGroup>

View file

@ -63,8 +63,8 @@
<LibrariesBuildArguments>$(LibrariesBuildArguments) /p:BuildAllOOBPackages=true</LibrariesBuildArguments>
<LibrariesBuildArguments>$(LibrariesBuildArguments) /p:KeepNativeSymbols=true</LibrariesBuildArguments>
<LibrariesBuildArguments>$(LibrariesBuildArguments) /p:BuiltSdkPackageOverride=""</LibrariesBuildArguments> <!-- Clear PackageOverride for Libraries - it only applies to coreclr -->
<LibrariesBuildArguments Condition="'$(OfflineBuild)' == 'true'">$(LibrariesBuildArguments) /p:MicrosoftNETCoreDotNetHostPackageVersion=$(DOTNET_HOST_BOOTSTRAP_VERSION)</LibrariesBuildArguments>
<LibrariesBuildArguments Condition="'$(OfflineBuild)' == 'true'">$(LibrariesBuildArguments) /p:MicrosoftNETCoreDotNetHostPolicyPackageVersion=$(DOTNET_HOST_BOOTSTRAP_VERSION)</LibrariesBuildArguments>
<LibrariesBuildArguments>$(LibrariesBuildArguments) /p:MicrosoftNETCoreDotNetHostPackageVersion=$(DOTNET_HOST_BOOTSTRAP_VERSION)</LibrariesBuildArguments>
<LibrariesBuildArguments>$(LibrariesBuildArguments) /p:MicrosoftNETCoreDotNetHostPolicyPackageVersion=$(DOTNET_HOST_BOOTSTRAP_VERSION)</LibrariesBuildArguments>
<!-- installer -->
@ -120,8 +120,8 @@
<EnvironmentRestoreSources>$(SourceBuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources>$(EnvironmentRestoreSources)%3B$(ShippingPackagesOutput)</EnvironmentRestoreSources>
<EnvironmentRestoreSources>$(EnvironmentRestoreSources)%3B$(NonShippingPackagesOutput)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(OfflineBuild)' == 'true'">$(EnvironmentRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(OfflineBuild)' != 'true'">$(EnvironmentRestoreSources)%3Bhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public%40Local/nuget/v3/index.json</EnvironmentRestoreSources>
<EnvironmentRestoreSources>$(EnvironmentRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(BuildWithOnlineSources)' == 'true'">$(EnvironmentRestoreSources)%3Bhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public%40Local/nuget/v3/index.json</EnvironmentRestoreSources>
</PropertyGroup>

View file

@ -36,8 +36,8 @@
<OutputPlacementRepoApiImplemented>false</OutputPlacementRepoApiImplemented>
<EnvironmentRestoreSources>$(SourceBuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(OfflineBuild)' == 'true'">$(EnvironmentRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(OfflineBuild)' != 'true'">$(EnvironmentRestoreSources)%3Bhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public%40Local/nuget/v3/index.json</EnvironmentRestoreSources>
<EnvironmentRestoreSources>$(EnvironmentRestoreSources)%3B$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</EnvironmentRestoreSources>
<EnvironmentRestoreSources Condition="'$(BuildWithOnlineSources)' == 'true'">$(EnvironmentRestoreSources)%3Bhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public%40Local/nuget/v3/index.json</EnvironmentRestoreSources>
</PropertyGroup>
<ItemGroup>

View file

@ -1,9 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Target Name="AcquireDarcCore">
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Installing Darc." />
<Exec Command="$(RepositoryEngineeringDir)common/darc-init.sh --darcversion $(DarcVersion) --toolpath $(DarcInstallDir)" />
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Done installing Darc." />
</Target>
</Project>

View file

@ -5,7 +5,6 @@
<Import Project="$(OfflineAllRepoPropsFile)" Condition="Exists('$(OfflineAllRepoPropsFile)')" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="WriteSourceRepoProperties" />
<UsingTask AssemblyFile="$(LeakDetectionTasksAssembly)" TaskName="MarkAndCatalogPackages" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="NuGetPack" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="ZipFileExtractToDirectory" />
@ -15,10 +14,7 @@
<BuildTasksTarget Include="Restore;Build;InstallResolver" />
</ItemGroup>
<!-- TODO: Don't setup these sources now. Need a switch for building to check prebuilts.
Currently, tarball build allows online restore sources.
See https://github.com/dotnet/source-build/issues/2255 -->
<PropertyGroup Condition="'$(OfflineBuild)' == 'true' AND 'false' == 'true' ">
<PropertyGroup Condition=" '$(BuildWithOnlineSources)' != 'true' ">
<BuildTasksOfflineSources>$(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)</BuildTasksOfflineSources>
</PropertyGroup>
@ -42,7 +38,6 @@
</Target>
<Target Name="UnpackTarballs"
Condition="'$(OfflineBuild)' == 'true'"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(CompletedSemaphorePath)UnpackTarballs.complete" >
@ -115,7 +110,6 @@
</Target>
<Target Name="BuildTextOnlyPackages"
Condition="'$(OfflineBuild)' == 'true'"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(CompletedSemaphorePath)BuildTextOnlyPackages.complete">
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Packing text-only packages." />
@ -136,7 +130,6 @@
<Target Name="ExtractToolPackage"
DependsOnTargets="UnpackTarballs;BuildXPlatTasks"
Condition="'$(OfflineBuild)' == 'true'"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(CompletedSemaphorePath)ExtractToolPackage.complete">
<ZipFileExtractToDirectory SourceArchive="$(PrebuiltSourceBuiltPackagesPath)Microsoft.DotNet.Arcade.Sdk.$(ARCADE_BOOTSTRAP_VERSION).nupkg"
@ -166,7 +159,7 @@
</Target>
<Target Name="PoisonPrebuiltPackages"
Condition="'$(EnablePoison)' == 'true' and '$(OfflineBuild)' == 'true'"
Condition="'$(EnablePoison)' == 'true'"
Inputs="$(MSBuildProjectFullPath)"
Outputs="$(CompletedSemaphorePath)PoisonPrebuiltPackages.complete">
<ItemGroup>

View file

@ -1,46 +0,0 @@
<UsageData>
<CreatedByRid>centos.7-x64</CreatedByRid>
<ProjectDirectories>
<Dir>src/ApplicationInsights-dotnet.53b80940842204f78708a538628288ff5d741a1d/</Dir>
<Dir>src/arcade.6eec4404c2df5bfa46e5da52383c881c5cca3a9f/</Dir>
<Dir>src/xdt.c01a538851a8ab1a1fbeb2e6243f391fff7587b4/</Dir>
<Dir>src/dotnet-aspnetcore.2670c128d522473e146ff9f8159bfffdfe694cd9/</Dir>
<Dir>src/cliCommandLineParser.0e89c2116ad28e404ba56c14d1c3f938caa25a01/</Dir>
<Dir>src/command-line-api.afd010ba8cb3cbd714c734465d1a5de1ee133e2d/</Dir>
<Dir>src/common.6e37cdfe96ac8b06a923242120169fafacd720e6/</Dir>
<Dir>src/cssparser.d6d86bcd8c162b1ae22ef00955ff748d028dd0ee/</Dir>
<Dir>src/diagnostics.47296ca69bb66180c132f3b16667f904dfc7c6c7/</Dir>
<Dir>src/fsharp.da6be68280c89131cdba2045525b80890401defd/</Dir>
<Dir>src/Humanizer.b30550eed103a6970d8465fe7c5c16300b70be81/</Dir>
<Dir>src/dotnet-installer.71365b4d424b0860ceb9ad8ee47f7cd08c55c362/</Dir>
<Dir>src/known-good-tests./</Dir>
<Dir>src/known-good./</Dir>
<Dir>src/linker.25604250cf2663aed6630e305cc0538aeebda80a/</Dir>
<Dir>src/msbuild.39993bd9d02917993b6147a9973dc3aa6e9b00c7/</Dir>
<Dir>src/netcorecli-fsc/</Dir>
<Dir>src/Newtonsoft.Json.cac0690ad133c5e166ce5642dc71175791404fad/</Dir>
<Dir>src/Newtonsoft.Json.e43dae94c26f0c30e9095327a3a9eac87193923d/</Dir>
<Dir>src/NuGet.Client.830c8be45dbbccd411ecf6080abff0c2c98079cf/</Dir>
<Dir>src/package-source-build/</Dir>
<Dir>src/roslyn-analyzers.77b259353aa44ec1510951a75c6e7ed6e662a001/</Dir>
<Dir>src/roslyn.9ed4b774d20940880de8df1ca8b07508aa01c8cd/</Dir>
<Dir>src/dotnet-runtime.cb5f173b9696d9d00a544b953d95190ab3b56df2/</Dir>
<Dir>src/dotnet-runtime.cb5f173b9696d9d00a544b953d95190ab3b56df2/</Dir>
<Dir>src/dotnet-sdk.ef14c79a16171496e2d972edd9a7874d596f624d/</Dir>
<Dir>src/sourcelink.f175b06862f889474b689a57527e489101c774cc/</Dir>
<Dir>src/symreader.f8a3ba85aed339fb8d08ca26f3876b28c32d58ee/</Dir>
<Dir>src/templating.568c09b99075179607c572f7b9f3ad3d706f1fc3/</Dir>
<Dir>src/test-templates.956e14dedd3a3ac981b320d66c6d389387a2954a/</Dir>
<Dir>src/vstest.212656d7b384a506aa714999f678b3ace82d114e/</Dir>
<Dir>src/xliff-tasks.a52f3d7fb58470749ee4035fbbcb7e63c78b0459/</Dir>
<Dir>Tools/</Dir>
<Dir>tools-local/tasks/</Dir>
<Dir>artifacts/obj/</Dir>
<Dir></Dir>
</ProjectDirectories>
<Usages>
<Usage Id="Microsoft.DotNet.Web.ItemTemplates" Version="5.0.2" />
<Usage Id="Microsoft.DotNet.Web.ProjectTemplates.5.0" Version="5.0.2" />
<Usage Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.5.0" Version="5.0.2" />
</Usages>
</UsageData>

View file

@ -1,457 +0,0 @@
<UsageData>
<CreatedByRid>centos.7-x64</CreatedByRid>
<ProjectDirectories>
<Dir>artifacts/src/ApplicationInsights-dotnet.53b80940842204f78708a538628288ff5d741a1d/</Dir>
<Dir>artifacts/src/arcade.6eec4404c2df5bfa46e5da52383c881c5cca3a9f/</Dir>
<Dir>artifacts/src/xdt.c01a538851a8ab1a1fbeb2e6243f391fff7587b4/</Dir>
<Dir>artifacts/src/dotnet-aspnetcore.b7a2ec8c7ed6b48857af0a69688a73e8c14fe6cb/</Dir>
<Dir>artifacts/src/CliCommandLineParser.0e89c2116ad28e404ba56c14d1c3f938caa25a01/</Dir>
<Dir>artifacts/src/command-line-api.6ddde11ed45e3f4b9d80c97670f347dbfda15c3f/</Dir>
<Dir>artifacts/src/common.6e37cdfe96ac8b06a923242120169fafacd720e6/</Dir>
<Dir>artifacts/src/cssparser.d6d86bcd8c162b1ae22ef00955ff748d028dd0ee/</Dir>
<Dir>artifacts/src/diagnostics.47296ca69bb66180c132f3b16667f904dfc7c6c7/</Dir>
<Dir>artifacts/src/fsharp.7ce7132f1459095e635194d09d6f73265352029a/</Dir>
<Dir>artifacts/src/Humanizer.b30550eed103a6970d8465fe7c5c16300b70be81/</Dir>
<Dir>artifacts/src/dotnet-installer.db7cc87d512335808e3806067f2bf9b31379e1db/</Dir>
<Dir>artifacts/src/known-good-tests./</Dir>
<Dir>artifacts/src/known-good./</Dir>
<Dir>artifacts/src/linker.c43f981eec336c1dc4fd0ead84b5e09db9377d9e/</Dir>
<Dir>artifacts/src/msbuild.5e4b48a27efce55a613664b58d353ab4c8d1f6c1/</Dir>
<Dir>src/netcorecli-fsc/</Dir>
<Dir>artifacts/src/Newtonsoft.Json.cac0690ad133c5e166ce5642dc71175791404fad/</Dir>
<Dir>artifacts/src/Newtonsoft.Json.e43dae94c26f0c30e9095327a3a9eac87193923d/</Dir>
<Dir>artifacts/src/nuget.client.d525b0e670f3b6cbd5c73a35f04730a9f658c852/</Dir>
<Dir>src/package-source-build/</Dir>
<Dir>artifacts/src/roslyn-analyzers.ce71b27be743710012c0460071da188b2f05959c/</Dir>
<Dir>artifacts/src/roslyn.59eedc33d35754759994155ea2f4e1012a9951e3/</Dir>
<Dir>artifacts/src/dotnet-runtime.2f740adc1457e8a28c1c072993b66f515977eb51/</Dir>
<Dir>artifacts/src/dotnet-runtime.2f740adc1457e8a28c1c072993b66f515977eb51/</Dir>
<Dir>artifacts/src/dotnet-sdk.51369266643769f9f0c1184e89715cd1045126d0/</Dir>
<Dir>artifacts/src/sourcelink.f175b06862f889474b689a57527e489101c774cc/</Dir>
<Dir>artifacts/src/symreader.f8a3ba85aed339fb8d08ca26f3876b28c32d58ee/</Dir>
<Dir>artifacts/src/templating.8470ff317250d761c72f920b8ea1c0700b230eb3/</Dir>
<Dir>artifacts/src/test-templates.956e14dedd3a3ac981b320d66c6d389387a2954a/</Dir>
<Dir>artifacts/src/vstest.99b911a57a02fc5d2eeef23e9ab8cbea4505678b/</Dir>
<Dir>artifacts/src/xliff-tasks.a52f3d7fb58470749ee4035fbbcb7e63c78b0459/</Dir>
<Dir>Tools/</Dir>
<Dir>tools-local/tasks/</Dir>
<Dir>artifacts/obj/</Dir>
<Dir></Dir>
</ProjectDirectories>
<Usages>
<!-- OSX-only prebuilts. please do not remove these when updating this baseline, except for updating versions when necessary -->
<Usage Id="Microsoft.AspNetCore.App.Runtime.linux-x64" Version="5.0.0-rc.1.20451.17" />
<Usage Id="Microsoft.Dotnet.WinForms.ProjectTemplates" Version="4.8.1-servicing.19605.5" />
<Usage Id="Microsoft.Dotnet.WinForms.ProjectTemplates" Version="5.0.0-rc.1.20451.14" />
<Usage Id="Microsoft.NETCore.App.Host.linux-x64" Version="5.0.0-rc.1.20451.14" />
<!-- End OSX-only prebuilts -->
<Usage Id="MicroBuild.Core" Version="0.2.0" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="MicroBuild.Core" Version="0.3.0" IsDirectDependency="true" />
<Usage Id="MicroBuild.Core.Sentinel" Version="1.0.0" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="Microsoft.AspNetCore.App.Ref" Version="3.0.1" />
<Usage Id="Microsoft.AspNetCore.App.Ref" Version="3.1.10" />
<Usage Id="Microsoft.AspNetCore.App.Ref" Version="5.0.0" />
<Usage Id="Microsoft.AspNetCore.Components.WebAssembly.Templates" Version="3.2.1" />
<Usage Id="Microsoft.Bcl.AsyncInterfaces" Version="1.1.0" />
<Usage Id="Microsoft.Bcl.AsyncInterfaces" Version="5.0.0-rc.1.20451.14" />
<Usage Id="Microsoft.Build" Version="15.7.179" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.CentralPackageVersions" Version="2.0.1" />
<Usage Id="Microsoft.Build.Framework" Version="15.1.1012" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Framework" Version="15.3.409" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Framework" Version="15.4.8" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Framework" Version="15.7.179" />
<Usage Id="Microsoft.Build.Tasks.Core" Version="15.3.409" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Tasks.Core" Version="15.7.179" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Traversal" Version="2.1.1" />
<Usage Id="Microsoft.Build.Utilities.Core" Version="15.1.1012" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Utilities.Core" Version="15.3.409" />
<Usage Id="Microsoft.Build.Utilities.Core" Version="15.4.8" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Utilities.Core" Version="15.7.179" />
<Usage Id="Microsoft.CodeAnalysis.Analyzers" Version="2.6.1" />
<Usage Id="Microsoft.CodeAnalysis.Analyzers" Version="2.9.6" />
<Usage Id="Microsoft.CodeAnalysis.Analyzers" Version="3.0.0" />
<Usage Id="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="3.3.0" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.Common" Version="2.9.0" />
<Usage Id="Microsoft.CodeAnalysis.Common" Version="3.4.0" />
<Usage Id="Microsoft.CodeAnalysis.Common" Version="3.8.0" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.CSharp" Version="2.9.0" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.CSharp" Version="3.4.0" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.CSharp.CodeStyle" Version="3.8.0-5.20519.18" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.CSharp.CodeStyle" Version="3.8.0" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.VisualBasic.CodeStyle" Version="3.8.0-5.20519.18" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.VisualBasic.CodeStyle" Version="3.8.0" IsDirectDependency="true" />
<Usage Id="Microsoft.CSharp" Version="4.0.1" IsDirectDependency="true" />
<Usage Id="Microsoft.CSharp" Version="4.3.0" IsDirectDependency="true" />
<Usage Id="Microsoft.Docker.Sdk" Version="1.1.0" />
<Usage Id="Microsoft.DotNet.Arcade.Sdk" Version="5.0.0-beta.20426.4" />
<Usage Id="Microsoft.DotNet.Common.ItemTemplates" Version="1.0.2-beta3" />
<Usage Id="Microsoft.DotNet.Common.ItemTemplates" Version="2.0.0-preview8.19373.1" />
<Usage Id="Microsoft.DotNet.Common.ItemTemplates" Version="3.1.10" />
<Usage Id="Microsoft.DotNet.PlatformAbstractions" Version="2.1.0" />
<Usage Id="Microsoft.DotNet.SignTool" Version="5.0.0-beta.20426.4" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="microsoft.dotnet.templateLocator" Version="5.0.100-rc.1.20421.19" />
<Usage Id="Microsoft.DotNet.Web.ItemTemplates" Version="2.1.27" />
<Usage Id="Microsoft.DotNet.Web.ItemTemplates" Version="3.0.1" />
<Usage Id="Microsoft.DotNet.Web.ItemTemplates" Version="3.1.14" />
<Usage Id="Microsoft.DotNet.Web.ProjectTemplates.2.1" Version="2.1.27" />
<Usage Id="Microsoft.DotNet.Web.ProjectTemplates.3.0" Version="3.0.1" />
<Usage Id="Microsoft.DotNet.Web.ProjectTemplates.3.1" Version="3.1.14" />
<Usage Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.2.1" Version="2.1.27" />
<Usage Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.3.0" Version="3.0.1" />
<Usage Id="Microsoft.DotNet.Web.Spa.ProjectTemplates.3.1" Version="3.1.14" />
<Usage Id="Microsoft.Extensions.DependencyInjection" Version="5.0.0" />
<Usage Id="Microsoft.Extensions.DependencyModel" Version="2.1.0" IsDirectDependency="true" />
<Usage Id="Microsoft.Extensions.DependencyModel" Version="3.1.6" IsDirectDependency="true" />
<Usage Id="Microsoft.FSharp.Compiler" Version="11.3.2-beta.21102.9" IsDirectDependency="true" />
<Usage Id="Microsoft.NET.Sdk.IL" Version="5.0.0-preview.8.20359.4" />
<Usage Id="Microsoft.NETCore.App" Version="2.0.0" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="Microsoft.NETCore.App" Version="2.1.0" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="Microsoft.NETCore.App.Ref" Version="3.0.0" />
<Usage Id="Microsoft.NETCore.App.Ref" Version="3.1.0" />
<Usage Id="Microsoft.NETCore.App.Ref" Version="5.0.0" />
<Usage Id="Microsoft.NETCore.DotNetAppHost" Version="2.0.0" />
<Usage Id="Microsoft.NETCore.DotNetAppHost" Version="2.1.0" />
<Usage Id="Microsoft.NETCore.DotNetHostPolicy" Version="2.0.0" />
<Usage Id="Microsoft.NETCore.DotNetHostPolicy" Version="2.1.0" />
<Usage Id="Microsoft.NETCore.DotNetHostResolver" Version="2.0.0" />
<Usage Id="Microsoft.NETCore.DotNetHostResolver" Version="2.1.0" />
<Usage Id="Microsoft.NETCore.Platforms" Version="1.0.1" />
<Usage Id="Microsoft.NETCore.Platforms" Version="1.1.0" />
<Usage Id="Microsoft.NETCore.Platforms" Version="1.1.1" />
<Usage Id="Microsoft.NETCore.Platforms" Version="2.0.0" />
<Usage Id="Microsoft.NETCore.Platforms" Version="2.1.0" IsDirectDependency="true" />
<Usage Id="Microsoft.NETCore.Platforms" Version="2.1.2" />
<Usage Id="Microsoft.NETCore.Platforms" Version="3.1.0" />
<Usage Id="Microsoft.NETCore.Targets" Version="1.0.1" />
<Usage Id="Microsoft.NETCore.Targets" Version="1.1.0" />
<Usage Id="Microsoft.NETCore.Targets" Version="1.1.3" />
<Usage Id="Microsoft.NETCore.Targets" Version="2.1.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0-preview.2" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net20" Version="1.0.0-preview.2" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net40" Version="1.0.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net45" Version="1.0.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net46" Version="1.0.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net461" Version="1.0.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net462" Version="1.0.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net47" Version="1.0.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net472" Version="1.0.0-preview.2" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net472" Version="1.0.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net48" Version="1.0.0" />
<Usage Id="Microsoft.SymbolUploader.Build.Task" Version="1.1.141804" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="Microsoft.VisualStudio.Setup.Configuration.Interop" Version="1.16.30" />
<Usage Id="Microsoft.Win32.Primitives" Version="4.0.1" />
<Usage Id="Microsoft.Win32.Primitives" Version="4.3.0" />
<Usage Id="Microsoft.Win32.Registry" Version="4.0.0" />
<Usage Id="Microsoft.Win32.Registry" Version="4.3.0" />
<Usage Id="Microsoft.Win32.Registry" Version="4.7.0" />
<Usage Id="Microsoft.Win32.SystemEvents" Version="4.7.0" />
<Usage Id="NETStandard.Library" Version="1.6.0" />
<Usage Id="NETStandard.Library" Version="1.6.1" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="NETStandard.Library" Version="2.0.0" />
<Usage Id="NETStandard.Library" Version="2.0.3" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="NETStandard.Library" Version="2.2.0-prerelease.19564.1" />
<Usage Id="NETStandard.Library.NETFramework" Version="2.0.1-servicing-26011-01" IsDirectDependency="true" />
<Usage Id="NETStandard.Library.Ref" Version="2.1.0" />
<Usage Id="NuGet.Commands" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Common" Version="5.1.0+08414feaac77473f29f6ac182ab4c390ecd3542f" />
<Usage Id="NuGet.Common" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Configuration" Version="5.1.0+08414feaac77473f29f6ac182ab4c390ecd3542f" />
<Usage Id="NuGet.Configuration" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Credentials" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.DependencyResolver.Core" Version="5.1.0+08414feaac77473f29f6ac182ab4c390ecd3542f" />
<Usage Id="NuGet.DependencyResolver.Core" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Frameworks" Version="5.1.0+08414feaac77473f29f6ac182ab4c390ecd3542f" />
<Usage Id="NuGet.Frameworks" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.LibraryModel" Version="5.1.0+08414feaac77473f29f6ac182ab4c390ecd3542f" />
<Usage Id="NuGet.LibraryModel" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Packaging" Version="5.1.0+08414feaac77473f29f6ac182ab4c390ecd3542f" />
<Usage Id="NuGet.Packaging" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.ProjectModel" Version="5.1.0+08414feaac77473f29f6ac182ab4c390ecd3542f" />
<Usage Id="NuGet.ProjectModel" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Protocol" Version="5.1.0+08414feaac77473f29f6ac182ab4c390ecd3542f" />
<Usage Id="NuGet.Protocol" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Versioning" Version="4.4.0" IsDirectDependency="true" />
<Usage Id="NuGet.Versioning" Version="5.1.0+08414feaac77473f29f6ac182ab4c390ecd3542f" />
<Usage Id="NuGet.Versioning" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NUnit3.DotNetNew.Template" Version="1.5.3" />
<Usage Id="NUnit3.DotNetNew.Template" Version="1.6.5" />
<Usage Id="NUnit3.DotNetNew.Template" Version="1.7.2" />
<Usage Id="NUnit3.DotNetNew.Template" Version="1.8.1" />
<Usage Id="runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="debian.8-x64" />
<Usage Id="runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="debian.8-x64" />
<Usage Id="runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="fedora.23-x64" />
<Usage Id="runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="fedora.23-x64" />
<Usage Id="runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="fedora.24-x64" />
<Usage Id="runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="fedora.24-x64" />
<Usage Id="runtime.native.System" Version="4.0.0" />
<Usage Id="runtime.native.System" Version="4.3.0" />
<Usage Id="runtime.native.System.Data.SqlClient.sni" Version="4.7.0" />
<Usage Id="runtime.native.System.IO.Compression" Version="4.1.0" />
<Usage Id="runtime.native.System.IO.Compression" Version="4.3.0" />
<Usage Id="runtime.native.System.Net.Http" Version="4.0.1" />
<Usage Id="runtime.native.System.Net.Http" Version="4.3.0" />
<Usage Id="runtime.native.System.Net.Security" Version="4.3.0" />
<Usage Id="runtime.native.System.Security.Cryptography" Version="4.0.0" />
<Usage Id="runtime.native.System.Security.Cryptography.Apple" Version="4.3.0" />
<Usage Id="runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" />
<Usage Id="runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" />
<Usage Id="runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="opensuse.13.2-x64" />
<Usage Id="runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="opensuse.13.2-x64" />
<Usage Id="runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="opensuse.42.1-x64" />
<Usage Id="runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="opensuse.42.1-x64" />
<Usage Id="runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple" Version="4.3.0" Rid="osx.10.10-x64" />
<Usage Id="runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="osx.10.10-x64" />
<Usage Id="runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="osx.10.10-x64" />
<Usage Id="runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="rhel.7-x64" />
<Usage Id="runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="rhel.7-x64" />
<Usage Id="runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="ubuntu.14.04-x64" />
<Usage Id="runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="ubuntu.14.04-x64" />
<Usage Id="runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="ubuntu.16.04-x64" />
<Usage Id="runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="ubuntu.16.04-x64" />
<Usage Id="runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.0" Rid="ubuntu.16.10-x64" />
<Usage Id="runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl" Version="4.3.2" Rid="ubuntu.16.10-x64" />
<Usage Id="runtime.win-arm64.runtime.native.System.Data.SqlClient.sni" Version="4.4.0" Rid="win-arm64" />
<Usage Id="runtime.win-x64.runtime.native.System.Data.SqlClient.sni" Version="4.4.0" Rid="win-x64" />
<Usage Id="runtime.win-x86.runtime.native.System.Data.SqlClient.sni" Version="4.4.0" Rid="win-x86" />
<Usage Id="sn" Version="1.0.0" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="System.AppContext" Version="4.1.0" />
<Usage Id="System.AppContext" Version="4.3.0" />
<Usage Id="System.Buffers" Version="4.0.0" />
<Usage Id="System.Buffers" Version="4.3.0" />
<Usage Id="System.Buffers" Version="4.4.0" />
<Usage Id="System.Buffers" Version="4.5.0" />
<Usage Id="System.Buffers" Version="4.5.1" />
<Usage Id="System.CodeDom" Version="4.4.0" />
<Usage Id="System.Collections" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Collections" Version="4.3.0" />
<Usage Id="System.Collections.Concurrent" Version="4.0.12" />
<Usage Id="System.Collections.Concurrent" Version="4.3.0" />
<Usage Id="System.Collections.Immutable" Version="1.2.0" />
<Usage Id="System.Collections.Immutable" Version="1.3.0" />
<Usage Id="System.Collections.Immutable" Version="1.3.1" />
<Usage Id="System.Collections.Immutable" Version="1.4.0" />
<Usage Id="System.Collections.Immutable" Version="1.5.0" IsDirectDependency="true" />
<Usage Id="System.Collections.Immutable" Version="1.6.0" />
<Usage Id="System.Collections.Immutable" Version="1.7.0" />
<Usage Id="System.Collections.Immutable" Version="1.7.1" />
<Usage Id="System.Collections.NonGeneric" Version="4.0.1" />
<Usage Id="System.Collections.NonGeneric" Version="4.3.0" />
<Usage Id="System.Collections.Specialized" Version="4.3.0" IsDirectDependency="true" />
<Usage Id="System.ComponentModel" Version="4.3.0" />
<Usage Id="System.ComponentModel.Annotations" Version="4.7.0" />
<Usage Id="System.ComponentModel.Composition" Version="4.5.0" IsDirectDependency="true" />
<Usage Id="System.ComponentModel.Primitives" Version="4.3.0" />
<Usage Id="System.ComponentModel.TypeConverter" Version="4.3.0" IsDirectDependency="true" />
<Usage Id="System.Composition" Version="1.0.31" />
<Usage Id="System.Composition.AttributedModel" Version="1.0.31" />
<Usage Id="System.Composition.Convention" Version="1.0.31" />
<Usage Id="System.Composition.Hosting" Version="1.0.31" />
<Usage Id="System.Composition.Runtime" Version="1.0.31" />
<Usage Id="System.Composition.TypedParts" Version="1.0.31" />
<Usage Id="System.Console" Version="4.0.0" />
<Usage Id="System.Console" Version="4.3.0" />
<Usage Id="System.Data.SqlClient" Version="4.8.1" IsDirectDependency="true" />
<Usage Id="System.Diagnostics.Contracts" Version="4.3.0" IsDirectDependency="true" />
<Usage Id="System.Diagnostics.Debug" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Diagnostics.Debug" Version="4.3.0" />
<Usage Id="System.Diagnostics.DiagnosticSource" Version="4.3.0" />
<Usage Id="System.Diagnostics.DiagnosticSource" Version="4.4.0" IsDirectDependency="true" />
<Usage Id="System.Diagnostics.FileVersionInfo" Version="4.0.0" IsDirectDependency="true" />
<Usage Id="System.Diagnostics.FileVersionInfo" Version="4.3.0" />
<Usage Id="System.Diagnostics.Process" Version="4.1.0" />
<Usage Id="System.Diagnostics.Process" Version="4.3.0" />
<Usage Id="System.Diagnostics.StackTrace" Version="4.3.0" IsDirectDependency="true" />
<Usage Id="System.Diagnostics.Tools" Version="4.0.1" />
<Usage Id="System.Diagnostics.Tools" Version="4.3.0" />
<Usage Id="System.Diagnostics.TraceSource" Version="4.0.0" />
<Usage Id="System.Diagnostics.TraceSource" Version="4.3.0" />
<Usage Id="System.Diagnostics.Tracing" Version="4.1.0" />
<Usage Id="System.Diagnostics.Tracing" Version="4.3.0" />
<Usage Id="System.Drawing.Common" Version="4.7.0" />
<Usage Id="System.Dynamic.Runtime" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Dynamic.Runtime" Version="4.3.0" />
<Usage Id="System.Globalization" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Globalization" Version="4.3.0" />
<Usage Id="System.Globalization.Calendars" Version="4.0.1" />
<Usage Id="System.Globalization.Calendars" Version="4.3.0" />
<Usage Id="System.Globalization.Extensions" Version="4.0.1" />
<Usage Id="System.Globalization.Extensions" Version="4.3.0" />
<Usage Id="System.IO" Version="4.1.0" IsDirectDependency="true" />
<Usage Id="System.IO" Version="4.3.0" />
<Usage Id="System.IO.Compression" Version="4.1.0" />
<Usage Id="System.IO.Compression" Version="4.3.0" />
<Usage Id="System.IO.Compression.ZipFile" Version="4.0.1" />
<Usage Id="System.IO.Compression.ZipFile" Version="4.3.0" />
<Usage Id="System.IO.FileSystem" Version="4.0.1" />
<Usage Id="System.IO.FileSystem" Version="4.3.0" />
<Usage Id="System.IO.FileSystem.Primitives" Version="4.0.1" />
<Usage Id="System.IO.FileSystem.Primitives" Version="4.3.0" />
<Usage Id="System.IO.MemoryMappedFiles" Version="4.3.0" />
<Usage Id="System.IO.Pipelines" Version="5.0.0" />
<Usage Id="System.IO.Pipes" Version="4.3.0" />
<Usage Id="System.IO.Pipes.AccessControl" Version="4.3.0" />
<Usage Id="System.IO.Pipes.AccessControl" Version="4.5.1" IsDirectDependency="true" />
<Usage Id="System.IO.UnmanagedMemoryStream" Version="4.3.0" />
<Usage Id="System.Linq" Version="4.1.0" IsDirectDependency="true" />
<Usage Id="System.Linq" Version="4.3.0" />
<Usage Id="System.Linq.Expressions" Version="4.1.0" IsDirectDependency="true" />
<Usage Id="System.Linq.Expressions" Version="4.3.0" />
<Usage Id="System.Linq.Parallel" Version="4.0.1" />
<Usage Id="System.Linq.Queryable" Version="4.3.0" />
<Usage Id="System.Memory" Version="4.5.3" />
<Usage Id="System.Memory" Version="4.5.4" />
<Usage Id="System.Net.Http" Version="4.1.0" />
<Usage Id="System.Net.Http" Version="4.3.0" />
<Usage Id="System.Net.Http" Version="4.3.4" IsDirectDependency="true" />
<Usage Id="System.Net.Primitives" Version="4.0.11" />
<Usage Id="System.Net.Primitives" Version="4.3.0" />
<Usage Id="System.Net.Requests" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Net.Requests" Version="4.3.0" />
<Usage Id="System.Net.Security" Version="4.3.0" IsDirectDependency="true" />
<Usage Id="System.Net.Sockets" Version="4.1.0" />
<Usage Id="System.Net.Sockets" Version="4.3.0" />
<Usage Id="System.Net.WebHeaderCollection" Version="4.0.1" />
<Usage Id="System.Net.WebHeaderCollection" Version="4.3.0" />
<Usage Id="System.Numerics.Vectors" Version="4.4.0" />
<Usage Id="System.Numerics.Vectors" Version="4.5.0" />
<Usage Id="System.ObjectModel" Version="4.0.12" IsDirectDependency="true" />
<Usage Id="System.ObjectModel" Version="4.3.0" />
<Usage Id="System.Private.DataContractSerialization" Version="4.1.1" />
<Usage Id="System.Reflection" Version="4.1.0" IsDirectDependency="true" />
<Usage Id="System.Reflection" Version="4.3.0" />
<Usage Id="System.Reflection.Emit" Version="4.0.1" />
<Usage Id="System.Reflection.Emit" Version="4.3.0" />
<Usage Id="System.Reflection.Emit.ILGeneration" Version="4.0.1" />
<Usage Id="System.Reflection.Emit.ILGeneration" Version="4.3.0" />
<Usage Id="System.Reflection.Emit.Lightweight" Version="4.0.1" />
<Usage Id="System.Reflection.Emit.Lightweight" Version="4.3.0" />
<Usage Id="System.Reflection.Extensions" Version="4.0.1" IsDirectDependency="true" />
<Usage Id="System.Reflection.Extensions" Version="4.3.0" />
<Usage Id="System.Reflection.Metadata" Version="1.3.0" />
<Usage Id="System.Reflection.Metadata" Version="1.4.1" />
<Usage Id="System.Reflection.Metadata" Version="1.4.2" IsDirectDependency="true" />
<Usage Id="System.Reflection.Metadata" Version="1.5.0" IsDirectDependency="true" />
<Usage Id="System.Reflection.Metadata" Version="1.6.0" IsDirectDependency="true" />
<Usage Id="System.Reflection.Metadata" Version="1.7.0" IsDirectDependency="true" />
<Usage Id="System.Reflection.Metadata" Version="1.8.0" IsDirectDependency="true" />
<Usage Id="System.Reflection.Metadata" Version="1.8.1" />
<Usage Id="System.Reflection.Primitives" Version="4.0.1" />
<Usage Id="System.Reflection.Primitives" Version="4.3.0" />
<Usage Id="System.Reflection.TypeExtensions" Version="4.1.0" />
<Usage Id="System.Reflection.TypeExtensions" Version="4.3.0" />
<Usage Id="System.Resources.Reader" Version="4.0.0" />
<Usage Id="System.Resources.ResourceManager" Version="4.0.1" IsDirectDependency="true" />
<Usage Id="System.Resources.ResourceManager" Version="4.3.0" />
<Usage Id="System.Resources.Writer" Version="4.0.0" />
<Usage Id="System.Runtime" Version="4.1.0" IsDirectDependency="true" />
<Usage Id="System.Runtime" Version="4.3.0" />
<Usage Id="System.Runtime" Version="4.3.1" IsDirectDependency="true" />
<Usage Id="System.Runtime.CompilerServices.Unsafe" Version="4.5.2" />
<Usage Id="System.Runtime.CompilerServices.Unsafe" Version="4.5.3" />
<Usage Id="System.Runtime.CompilerServices.Unsafe" Version="4.7.0" />
<Usage Id="System.Runtime.CompilerServices.Unsafe" Version="4.7.1" />
<Usage Id="System.Runtime.CompilerServices.Unsafe" Version="5.0.0-rc.1.20451.14" />
<Usage Id="System.Runtime.Extensions" Version="4.1.0" IsDirectDependency="true" />
<Usage Id="System.Runtime.Extensions" Version="4.3.0" />
<Usage Id="System.Runtime.Handles" Version="4.0.1" />
<Usage Id="System.Runtime.Handles" Version="4.3.0" />
<Usage Id="System.Runtime.InteropServices" Version="4.1.0" />
<Usage Id="System.Runtime.InteropServices" Version="4.3.0" />
<Usage Id="System.Runtime.InteropServices.RuntimeInformation" Version="4.0.0" />
<Usage Id="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
<Usage Id="System.Runtime.Loader" Version="4.0.0" />
<Usage Id="System.Runtime.Loader" Version="4.3.0" />
<Usage Id="System.Runtime.Numerics" Version="4.0.1" />
<Usage Id="System.Runtime.Numerics" Version="4.3.0" />
<Usage Id="System.Runtime.Serialization.Formatters" Version="4.3.0" IsDirectDependency="true" />
<Usage Id="System.Runtime.Serialization.Primitives" Version="4.1.1" IsDirectDependency="true" />
<Usage Id="System.Runtime.Serialization.Primitives" Version="4.3.0" IsDirectDependency="true" />
<Usage Id="System.Runtime.Serialization.Xml" Version="4.1.1" />
<Usage Id="System.Security.AccessControl" Version="4.3.0" />
<Usage Id="System.Security.AccessControl" Version="4.5.0" />
<Usage Id="System.Security.AccessControl" Version="4.7.0" />
<Usage Id="System.Security.Claims" Version="4.0.1" />
<Usage Id="System.Security.Claims" Version="4.3.0" />
<Usage Id="System.Security.Cryptography.Algorithms" Version="4.2.0" />
<Usage Id="System.Security.Cryptography.Algorithms" Version="4.3.0" />
<Usage Id="System.Security.Cryptography.Algorithms" Version="4.3.1" />
<Usage Id="System.Security.Cryptography.Cng" Version="4.2.0" />
<Usage Id="System.Security.Cryptography.Cng" Version="4.3.0" />
<Usage Id="System.Security.Cryptography.Cng" Version="4.7.0" />
<Usage Id="System.Security.Cryptography.Csp" Version="4.0.0" />
<Usage Id="System.Security.Cryptography.Csp" Version="4.3.0" />
<Usage Id="System.Security.Cryptography.Encoding" Version="4.0.0" />
<Usage Id="System.Security.Cryptography.Encoding" Version="4.3.0" />
<Usage Id="System.Security.Cryptography.OpenSsl" Version="4.0.0" />
<Usage Id="System.Security.Cryptography.OpenSsl" Version="4.3.0" />
<Usage Id="System.Security.Cryptography.Pkcs" Version="4.7.0" />
<Usage Id="System.Security.Cryptography.Pkcs" Version="5.0.0" />
<Usage Id="System.Security.Cryptography.Primitives" Version="4.0.0" />
<Usage Id="System.Security.Cryptography.Primitives" Version="4.3.0" />
<Usage Id="System.Security.Cryptography.ProtectedData" Version="4.3.0" />
<Usage Id="System.Security.Cryptography.X509Certificates" Version="4.1.0" />
<Usage Id="System.Security.Cryptography.X509Certificates" Version="4.3.0" />
<Usage Id="System.Security.Cryptography.Xml" Version="4.7.0" />
<Usage Id="System.Security.Permissions" Version="4.5.0" />
<Usage Id="System.Security.Permissions" Version="4.7.0" />
<Usage Id="System.Security.Principal" Version="4.0.1" />
<Usage Id="System.Security.Principal" Version="4.3.0" />
<Usage Id="System.Security.Principal.Windows" Version="4.0.0" IsDirectDependency="true" />
<Usage Id="System.Security.Principal.Windows" Version="4.3.0" />
<Usage Id="System.Security.Principal.Windows" Version="4.5.0" />
<Usage Id="System.Security.Principal.Windows" Version="4.7.0" />
<Usage Id="System.Text.Encoding" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Text.Encoding" Version="4.3.0" />
<Usage Id="System.Text.Encoding.CodePages" Version="4.0.1" />
<Usage Id="System.Text.Encoding.CodePages" Version="4.3.0" />
<Usage Id="System.Text.Encoding.CodePages" Version="4.4.0" />
<Usage Id="System.Text.Encoding.CodePages" Version="4.5.1" />
<Usage Id="System.Text.Encoding.Extensions" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Text.Encoding.Extensions" Version="4.3.0" />
<Usage Id="System.Text.Encodings.Web" Version="4.7.0" />
<Usage Id="System.Text.Encodings.Web" Version="4.7.1" />
<Usage Id="System.Text.Encodings.Web" Version="5.0.0-rc.1.20451.14" />
<Usage Id="System.Text.Json" Version="4.7.0" IsDirectDependency="true" />
<Usage Id="System.Text.Json" Version="4.7.2" />
<Usage Id="System.Text.Json" Version="5.0.0-rc.1.20451.14" IsDirectDependency="true" />
<Usage Id="System.Text.RegularExpressions" Version="4.1.0" IsDirectDependency="true" />
<Usage Id="System.Text.RegularExpressions" Version="4.3.0" />
<Usage Id="System.Threading" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Threading" Version="4.3.0" />
<Usage Id="System.Threading.Overlapped" Version="4.3.0" />
<Usage Id="System.Threading.Tasks" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Threading.Tasks" Version="4.3.0" />
<Usage Id="System.Threading.Tasks.Dataflow" Version="4.5.24" />
<Usage Id="System.Threading.Tasks.Dataflow" Version="4.6.0" />
<Usage Id="System.Threading.Tasks.Dataflow" Version="4.9.0" />
<Usage Id="System.Threading.Tasks.Extensions" Version="4.0.0" />
<Usage Id="System.Threading.Tasks.Extensions" Version="4.3.0" />
<Usage Id="System.Threading.Tasks.Extensions" Version="4.5.3" />
<Usage Id="System.Threading.Tasks.Extensions" Version="4.5.4" />
<Usage Id="System.Threading.Tasks.Parallel" Version="4.3.0" />
<Usage Id="System.Threading.Thread" Version="4.0.0" />
<Usage Id="System.Threading.Thread" Version="4.3.0" />
<Usage Id="System.Threading.ThreadPool" Version="4.0.10" />
<Usage Id="System.Threading.ThreadPool" Version="4.3.0" />
<Usage Id="System.Threading.Timer" Version="4.0.1" />
<Usage Id="System.Threading.Timer" Version="4.3.0" />
<Usage Id="System.ValueTuple" Version="4.3.0" />
<Usage Id="System.ValueTuple" Version="4.4.0" />
<Usage Id="System.ValueTuple" Version="4.5.0" IsDirectDependency="true" />
<Usage Id="System.Windows.Extensions" Version="4.7.0" />
<Usage Id="System.Xml.ReaderWriter" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Xml.ReaderWriter" Version="4.3.0" />
<Usage Id="System.Xml.XDocument" Version="4.0.11" IsDirectDependency="true" />
<Usage Id="System.Xml.XDocument" Version="4.3.0" />
<Usage Id="System.Xml.XmlDocument" Version="4.0.1" />
<Usage Id="System.Xml.XmlDocument" Version="4.3.0" IsDirectDependency="true" />
<Usage Id="System.Xml.XmlSerializer" Version="4.0.11" />
<Usage Id="System.Xml.XPath" Version="4.0.1" />
<Usage Id="System.Xml.XPath" Version="4.3.0" />
<Usage Id="System.Xml.XPath.XDocument" Version="4.3.0" />
<Usage Id="System.Xml.XPath.XmlDocument" Version="4.0.1" />
<Usage Id="vswhere" Version="2.6.7" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="XliffTasks" Version="1.0.0-beta.20420.1" IsDirectDependency="true" IsAutoReferenced="true" />
</Usages>
</UsageData>

View file

@ -0,0 +1,168 @@
<UsageData>
<CreatedByRid>fedora.33-x64</CreatedByRid>
<ProjectDirectories>
<Dir>src/arcade.a3377cccde8639089f99107e2ba5df2c8cbe6394/</Dir>
<Dir>src/aspnetcore./</Dir>
<Dir>src/clicommandlineparser.3198bf5660cad3dab85f5475bf1fda9688146e3f/</Dir>
<Dir>src/command-line-api.5e855e911de7c56fe28400c4500e888fe2a3da8e/</Dir>
<Dir>src/diagnostics.6f48c2ae749c29b687af0353e6c2a9590d7e3d22/</Dir>
<Dir>src/fsharp./</Dir>
<Dir>src/installer.c6ec4363003b18d8e587620baa36205b80ee3074/</Dir>
<Dir>src/known-good-tests./</Dir>
<Dir>src/known-good./</Dir>
<Dir>src/linker.f2588193553431636b9853b0f87209fa395a72c5/</Dir>
<Dir>src/msbuild./</Dir>
<Dir>src/nuget.client./</Dir>
<Dir>src/package-source-build/</Dir>
<Dir>src/roslyn-analyzers./</Dir>
<Dir>src/roslyn./</Dir>
<Dir>src/runtime./</Dir>
<Dir>src/runtime./</Dir>
<Dir>src/sdk./</Dir>
<Dir>src/source-build-reference-packages.36fb56afdf0ee2fb2e0833bdef98dfde12a0837b/</Dir>
<Dir>src/source-build.3fb25b8db3bec654e37e71a5b2b7fde14444bc2f/</Dir>
<Dir>src/sourcelink.4b584dbc392bb1aad49c2eb1ab84d8b489b6dccc/</Dir>
<Dir>src/symreader.1968a003d845d119a9d38ac4daaeea22897f7daf/</Dir>
<Dir>src/templating.3bc0d90f3e450f3e4ebda128081d091fb42968e3/</Dir>
<Dir>src/test-templates.6898c1c70c2d14e9725ddab6e1ebe8084c4d7e27/</Dir>
<Dir>src/vstest./</Dir>
<Dir>src/xdt.6a46e7c886cdf499ba3433f665ab417be814135e/</Dir>
<Dir>src/xliff-tasks.71c811561ad4dcf46825a5077fbcc668ab74754f/</Dir>
<Dir>Tools/</Dir>
<Dir>tools-local/tasks/</Dir>
<Dir>artifacts/obj/</Dir>
<Dir></Dir>
</ProjectDirectories>
<Usages>
<Usage Id="Microsoft.AspNetCore.App.Ref" Version="3.1.10" />
<Usage Id="Microsoft.AspNetCore.App.Ref" Version="5.0.0" />
<Usage Id="Microsoft.Bcl.AsyncInterfaces" Version="5.0.0" />
<Usage Id="Microsoft.Bcl.AsyncInterfaces" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Build" Version="16.7.0" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Framework" Version="16.7.0" />
<Usage Id="Microsoft.Build.Framework" Version="17.0.0-preview-21267-01" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Tasks.Core" Version="16.7.0" IsDirectDependency="true" />
<Usage Id="Microsoft.Build.Utilities.Core" Version="16.7.0" />
<Usage Id="Microsoft.Build.Utilities.Core" Version="17.0.0-preview-21267-01" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.Analyzers" Version="2.6.1" />
<Usage Id="Microsoft.CodeAnalysis.Analyzers" Version="3.3.2" />
<Usage Id="Microsoft.CodeAnalysis.Common" Version="2.9.0" />
<Usage Id="Microsoft.CodeAnalysis.Common" Version="3.10.0-2.final" />
<Usage Id="Microsoft.CodeAnalysis.CSharp" Version="2.9.0" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.CSharp" Version="3.10.0-2.final" />
<Usage Id="Microsoft.CodeAnalysis.CSharp.CodeStyle" Version="3.10.0-2.final" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.10.0-2.final" IsDirectDependency="true" />
<Usage Id="Microsoft.CodeAnalysis.Workspaces.Common" Version="3.10.0-2.final" />
<Usage Id="Microsoft.CodeCoverage" Version="16.7.1" />
<Usage Id="Microsoft.DotNet.ApiCompat" Version="6.0.0-beta.21319.2" IsDirectDependency="true" />
<Usage Id="Microsoft.Extensions.Configuration" Version="2.1.1" />
<Usage Id="Microsoft.Extensions.Configuration" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Extensions.Configuration.Abstractions" Version="2.1.1" />
<Usage Id="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Extensions.Configuration.Binder" Version="2.1.1" />
<Usage Id="Microsoft.Extensions.Configuration.Binder" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Extensions.DependencyInjection" Version="2.1.1" IsDirectDependency="true" />
<Usage Id="Microsoft.Extensions.DependencyInjection" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.1.1" />
<Usage Id="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Extensions.Logging" Version="2.1.1" IsDirectDependency="true" />
<Usage Id="Microsoft.Extensions.Logging" Version="6.0.0-preview.3.21164.3" IsDirectDependency="true" />
<Usage Id="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
<Usage Id="Microsoft.Extensions.Logging.Abstractions" Version="6.0.0-preview.3.21164.3" IsDirectDependency="true" />
<Usage Id="Microsoft.Extensions.Logging.Configuration" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Extensions.Logging.Console" Version="6.0.0-preview.3.21164.3" IsDirectDependency="true" />
<Usage Id="Microsoft.Extensions.Options" Version="2.1.1" />
<Usage Id="Microsoft.Extensions.Options" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Extensions.Options.ConfigurationExtensions" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Extensions.Primitives" Version="2.1.1" />
<Usage Id="Microsoft.Extensions.Primitives" Version="6.0.0-preview.3.21164.3" />
<Usage Id="Microsoft.Net.Compilers.Toolset" Version="3.10.0-4.21310.5" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="Microsoft.NET.Sdk.WorkloadManifestReader" Version="6.0.100-preview.5.21254.11" IsDirectDependency="true" />
<Usage Id="Microsoft.NET.StringTools" Version="1.0.0-preview-21267-01" />
<Usage Id="Microsoft.NET.Test.Sdk" Version="16.7.1" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="Microsoft.NETCore.App.Host.linux-x64" Version="5.0.5" />
<Usage Id="Microsoft.NETCore.App.Ref" Version="5.0.0" />
<Usage Id="Microsoft.NETCore.DotNetAppHost" Version="2.1.0" />
<Usage Id="Microsoft.NETCore.DotNetHostPolicy" Version="2.1.0" />
<Usage Id="Microsoft.NETCore.DotNetHostResolver" Version="2.1.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net20" Version="1.0.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net40" Version="1.0.0" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net472" Version="1.0.0-preview.1" IsDirectDependency="true" />
<Usage Id="Microsoft.NETFramework.ReferenceAssemblies.net472" Version="1.0.0" />
<Usage Id="Microsoft.TestPlatform.ObjectModel" Version="16.7.1" />
<Usage Id="Microsoft.TestPlatform.TestHost" Version="16.7.1" />
<Usage Id="Microsoft.VisualStudio.Setup.Configuration.Interop" Version="1.16.30" />
<Usage Id="Microsoft.Win32.SystemEvents" Version="4.7.0" />
<Usage Id="Mono.Cecil" Version="0.11.3" />
<Usage Id="NETStandard.Library" Version="1.6.0" />
<Usage Id="NETStandard.Library" Version="1.6.1" />
<Usage Id="Newtonsoft.Json" Version="12.0.3" />
<Usage Id="NuGet.Commands" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Common" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Common" Version="5.8.1+b257acfcdd76b32d4cddd549c177d99e800f4d83" />
<Usage Id="NuGet.Configuration" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Configuration" Version="5.8.1+b257acfcdd76b32d4cddd549c177d99e800f4d83" />
<Usage Id="NuGet.Credentials" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Credentials" Version="5.8.1+b257acfcdd76b32d4cddd549c177d99e800f4d83" />
<Usage Id="NuGet.DependencyResolver.Core" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Frameworks" Version="5.0.0+42a8779499c1d1ed2488c2e6b9e2ee6ff6107766" />
<Usage Id="NuGet.Frameworks" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Frameworks" Version="5.8.1+b257acfcdd76b32d4cddd549c177d99e800f4d83" />
<Usage Id="NuGet.LibraryModel" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Packaging" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Packaging" Version="5.8.1+b257acfcdd76b32d4cddd549c177d99e800f4d83" />
<Usage Id="NuGet.Packaging.Core" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.ProjectModel" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Protocol" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Protocol" Version="5.8.1+b257acfcdd76b32d4cddd549c177d99e800f4d83" />
<Usage Id="NuGet.Versioning" Version="5.6.0-preview.2.6489+5433d816f748d4ad78b75fc320397d8117f57771" />
<Usage Id="NuGet.Versioning" Version="5.8.1+b257acfcdd76b32d4cddd549c177d99e800f4d83" />
<Usage Id="runtime.linux-x64.Microsoft.NETCore.ILAsm" Version="5.0.0-preview.4.20202.18" Rid="linux-x64" />
<Usage Id="runtime.linux-x64.Microsoft.NETCore.ILDAsm" Version="5.0.0-preview.4.20202.18" Rid="linux-x64" />
<Usage Id="runtime.native.System" Version="4.0.0" />
<Usage Id="runtime.native.System" Version="4.3.0" />
<Usage Id="runtime.native.System.IO.Compression" Version="4.3.0" />
<Usage Id="System.Collections.Immutable" Version="5.0.0" />
<Usage Id="System.Composition" Version="1.0.31" />
<Usage Id="System.Composition.AttributedModel" Version="1.0.31" />
<Usage Id="System.Composition.Convention" Version="1.0.31" />
<Usage Id="System.Composition.Hosting" Version="1.0.31" />
<Usage Id="System.Composition.Runtime" Version="1.0.31" />
<Usage Id="System.Composition.TypedParts" Version="1.0.31" />
<Usage Id="System.Configuration.ConfigurationManager" Version="4.7.0" />
<Usage Id="System.Diagnostics.DiagnosticSource" Version="6.0.0-preview.3.21164.3" />
<Usage Id="System.Drawing.Common" Version="4.7.0" />
<Usage Id="System.Formats.Asn1" Version="5.0.0" />
<Usage Id="System.IO.Pipelines" Version="5.0.1" />
<Usage Id="System.Memory" Version="4.5.0" IsDirectDependency="true" />
<Usage Id="System.Reflection.Metadata" Version="5.0.0" />
<Usage Id="System.Resources.Extensions" Version="4.6.0" />
<Usage Id="System.Runtime.CompilerServices.Unsafe" Version="4.5.0" IsDirectDependency="true" />
<Usage Id="System.Runtime.CompilerServices.Unsafe" Version="4.5.1" />
<Usage Id="System.Runtime.CompilerServices.Unsafe" Version="5.0.0" />
<Usage Id="System.Runtime.CompilerServices.Unsafe" Version="6.0.0-preview.3.21164.3" />
<Usage Id="System.Security.Cryptography.Cng" Version="4.4.0" IsDirectDependency="true" />
<Usage Id="System.Security.Cryptography.Cng" Version="5.0.0" />
<Usage Id="System.Security.Cryptography.Pkcs" Version="5.0.0" />
<Usage Id="System.Security.Cryptography.ProtectedData" Version="4.4.0" />
<Usage Id="System.Security.Cryptography.ProtectedData" Version="4.7.0" />
<Usage Id="System.Text.Encodings.Web" Version="4.7.1" />
<Usage Id="System.Text.Encodings.Web" Version="6.0.0-preview.3.21164.3" />
<Usage Id="System.Text.Json" Version="4.7.2" IsDirectDependency="true" />
<Usage Id="System.Text.Json" Version="6.0.0-preview.3.21164.3" />
<Usage Id="System.Threading.Tasks.Dataflow" Version="4.5.24" IsDirectDependency="true" />
<Usage Id="System.ValueTuple" Version="4.3.0" />
<Usage Id="System.Windows.Extensions" Version="4.7.0" />
<Usage Id="WiX" Version="3.11.2" />
<Usage Id="xunit" Version="2.4.1" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="xunit.abstractions" Version="2.0.3" />
<Usage Id="xunit.analyzers" Version="0.10.0" />
<Usage Id="xunit.assert" Version="2.4.1" />
<Usage Id="xunit.core" Version="2.4.1" />
<Usage Id="xunit.extensibility.core" Version="2.4.1" />
<Usage Id="xunit.extensibility.execution" Version="2.4.1" />
<Usage Id="xunit.runner.console" Version="2.4.1" IsDirectDependency="true" IsAutoReferenced="true" />
<Usage Id="xunit.runner.visualstudio" Version="2.4.3" IsDirectDependency="true" IsAutoReferenced="true" />
</Usages>
</UsageData>

View file

@ -13,13 +13,7 @@
<PackageReference Include="Microsoft.Build.Utilities.Core">
<Version>15.7.179</Version>
</PackageReference>
<ProjectReference Include="$(ClonedSubmoduleDirectory)linker.$(linkerGitCommitHash)/external/cecil/Mono.Cecil.csproj" Condition="'$(OfflineBuild)' != 'true'">
<SetConfiguration Condition=" '$(Configuration)' == 'Debug' ">Configuration=netstandard_Debug</SetConfiguration>
<SetConfiguration Condition=" '$(Configuration)' == 'Release' ">Configuration=netstandard_Release</SetConfiguration>
<Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
<Name>Mono.Cecil</Name>
</ProjectReference>
<ProjectReference Include="$(SubmoduleDirectory)linker.$(linkerGitCommitHash)/external/cecil/Mono.Cecil.csproj" Condition="'$(OfflineBuild)' == 'true'">
<ProjectReference Include="$(SubmoduleDirectory)linker.$(linkerGitCommitHash)/external/cecil/Mono.Cecil.csproj">
<SetConfiguration Condition=" '$(Configuration)' == 'Debug' ">Configuration=netstandard_Debug</SetConfiguration>
<SetConfiguration Condition=" '$(Configuration)' == 'Release' ">Configuration=netstandard_Release</SetConfiguration>
<Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>

View file

@ -6,6 +6,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
@ -25,7 +26,7 @@ namespace Microsoft.DotNet.Build.Tasks
/// <summary>
/// Whether to work in offline mode (remove all internet sources) or online mode (remove only authenticated sources)
/// </summary>
public bool OfflineBuild { get; set; }
public bool BuildWithOnlineSources { get; set; }
/// <summary>
/// A list of prefix strings that make the task keep a package source unconditionally. For
@ -36,7 +37,9 @@ namespace Microsoft.DotNet.Build.Tasks
public override bool Execute()
{
XDocument d = XDocument.Load(NuGetConfigFile);
string xml = File.ReadAllText(NuGetConfigFile);
string newLineChars = FileUtilities.DetectNewLineChars(xml);
XDocument d = XDocument.Parse(xml);
XElement packageSourcesElement = d.Root.Descendants().First(e => e.Name == "packageSources");
XElement disabledPackageSourcesElement = d.Root.Descendants().FirstOrDefault(e => e.Name == "disabledPackageSources");
@ -53,15 +56,15 @@ namespace Microsoft.DotNet.Build.Tasks
}
string feedUrl = e.Attribute("value").Value;
if (OfflineBuild)
{
return !(feedUrl.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || feedUrl.StartsWith("https://", StringComparison.OrdinalIgnoreCase));
}
else
if (BuildWithOnlineSources)
{
return !( feedUrl.StartsWith("https://pkgs.dev.azure.com/dnceng/_packaging", StringComparison.OrdinalIgnoreCase) ||
feedUrl.StartsWith("https://pkgs.dev.azure.com/dnceng/internal/_packaging", StringComparison.OrdinalIgnoreCase) );
}
else
{
return !(feedUrl.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || feedUrl.StartsWith("https://", StringComparison.OrdinalIgnoreCase));
}
}
return true;
@ -72,9 +75,9 @@ namespace Microsoft.DotNet.Build.Tasks
// Remove disabledPackageSources element so if any internal packages remain, they are used in source-build
disabledPackageSourcesElement?.ReplaceNodes(new XElement("clear"));
using (FileStream fs = new FileStream(NuGetConfigFile, FileMode.Create, FileAccess.ReadWrite))
using (var w = XmlWriter.Create(NuGetConfigFile, new XmlWriterSettings { NewLineChars = newLineChars, Indent = true }))
{
d.Save(fs);
d.Save(w);
}
return true;

View file

@ -1,317 +0,0 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Microsoft.Build.Framework;
using Microsoft.Build.Tasks;
using Microsoft.Build.Utilities;
using Microsoft.DotNet.SourceBuild.Tasks.Models;
using NuGet.Versioning;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml.Serialization;
namespace Microsoft.DotNet.Build.Tasks
{
public class WriteSourceRepoProperties : Task
{
[Required]
public string VersionDetailsFile { get; set; }
[Required]
public string ClonedSubmoduleGitRootDirectory { get; set; }
[Required]
public string ClonedSubmoduleDirectory { get; set; }
[Required]
public string SourceBuildMetadataDir { get; set; }
public override bool Execute()
{
var serializer = new XmlSerializer(typeof(VersionDetails));
VersionDetails versionDetails = null;
using (var stream = File.OpenRead(VersionDetailsFile))
{
versionDetails = (VersionDetails)serializer.Deserialize(stream);
}
var allRepoProps = new Dictionary<string, string>();
foreach (var dep in versionDetails.ToolsetDependencies.Concat(versionDetails.ProductDependencies))
{
Log.LogMessage(MessageImportance.Normal, $"[{DateTimeOffset.Now}] Starting dependency {dep.ToString()}");
string repoPath = DeriveRepoPath(ClonedSubmoduleDirectory, dep.Uri, dep.Sha);
string repoGitDir = DeriveRepoGitDirPath(ClonedSubmoduleGitRootDirectory, dep.Uri);
if (Directory.Exists(repoGitDir))
{
foreach (string repoName in GetRepoNamesOrDefault(dep))
{
string safeRepoName = repoName.Replace("-", "");
try
{
WriteMinimalMetadata(repoPath, dep.Uri, dep.Sha);
WriteSourceBuildMetadata(SourceBuildMetadataDir, repoGitDir, dep);
if (File.Exists(Path.Combine(repoPath, ".gitmodules")))
{
HandleSubmodules(repoPath, repoGitDir, dep);
}
allRepoProps[$"{safeRepoName}GitCommitHash"] = dep.Sha;
allRepoProps[$"{safeRepoName}OutputPackageVersion"] = dep.Version;
}
catch (Exception e)
{
Log.LogErrorFromException(e, true, true, null);
}
}
}
else
{
Log.LogMessage(MessageImportance.Normal, $"[{DateTimeOffset.Now}] Skipping dependency {dep.ToString()} - git dir {repoGitDir} doesn't exist");
}
}
string allRepoPropsPath = Path.Combine(SourceBuildMetadataDir, "AllRepoVersions.props");
Log.LogMessage(MessageImportance.Normal, $"[{DateTimeOffset.Now}] Writing all repo versions to {allRepoPropsPath}");
WritePropsFile(allRepoPropsPath, allRepoProps);
return !Log.HasLoggedErrors;
}
private void WriteSourceBuildMetadata(string sourceBuildMetadataPath, string repoGitDir, Dependency dependency)
{
foreach (string repoName in GetRepoNamesOrDefault(dependency))
{
string propsPath = Path.Combine(sourceBuildMetadataPath, $"{repoName}.props");
string commitCount = GetCommitCount(repoGitDir, dependency.Sha);
DerivedVersion derivedVersion = GetVersionInfo(dependency.Version, commitCount);
var repoProps = new Dictionary<string, string>
{
["GitCommitHash"] = dependency.Sha,
["GitCommitCount"] = commitCount,
["GitCommitDate"] = GetCommitDate(repoGitDir, dependency.Sha),
["OfficialBuildId"] = derivedVersion.OfficialBuildId,
["OutputPackageVersion"] = dependency.Version,
["PreReleaseVersionLabel"] = derivedVersion.PreReleaseVersionLabel,
["IsStable"] = string.IsNullOrWhiteSpace(derivedVersion.PreReleaseVersionLabel) ? "true" : "false",
};
WritePropsFile(propsPath, repoProps);
}
}
/// <summary>
/// Reverse a version in the Arcade style (https://github.com/dotnet/arcade/blob/fb92b14d8cd07cf44f8f7eefa8ac58d7ffd05f3f/src/Microsoft.DotNet.Arcade.Sdk/tools/Version.BeforeCommonTargets.targets#L18)
/// back to an OfficialBuildId + ReleaseLabel which we can then supply to get the same resulting version number.
/// </summary>
/// <param name="version">The complete version, e.g. 1.0.0-beta1-19720.5</param>
/// <param name="commitCount">The current commit count of the repo. This is used for some repos that do not use the standard versioning scheme.</param>
/// <returns></returns>
private static DerivedVersion GetVersionInfo(string version, string commitCount)
{
var nugetVersion = new NuGetVersion(version);
if (!string.IsNullOrWhiteSpace(nugetVersion.Release))
{
var releaseParts = nugetVersion.Release.Split('-', '.');
if (releaseParts.Length == 2)
{
if (releaseParts[1].TrimStart('0') == commitCount)
{
// core-sdk does this - OfficialBuildId is only used for their fake package and not in anything shipped
return new DerivedVersion { OfficialBuildId = DateTime.Now.ToString("yyyyMMdd.1"), PreReleaseVersionLabel = releaseParts[0] };
}
else
{
// NuGet does this - arbitrary build IDs
return new DerivedVersion { OfficialBuildId = releaseParts[1], PreReleaseVersionLabel = releaseParts[0] };
}
}
else if (releaseParts.Length == 3)
{
// VSTest uses full dates for the first part of their preview build numbers
if (DateTime.TryParseExact(releaseParts[1], "yyyyMMdd", new CultureInfo("en-US"), DateTimeStyles.AssumeLocal, out DateTime fullDate))
{
return new DerivedVersion { OfficialBuildId = $"{releaseParts[1]}.{releaseParts[2]}", PreReleaseVersionLabel = releaseParts[0] };
}
else if (int.TryParse(releaseParts[1], out int datePart) && int.TryParse(releaseParts[2], out int buildPart))
{
if (datePart > 1 && datePart < 8 && buildPart > 1000 && buildPart < 10000)
{
return new DerivedVersion { OfficialBuildId = releaseParts[2], PreReleaseVersionLabel = $"{releaseParts[0]}.{releaseParts[1]}" };
}
else
{
return new DerivedVersion { OfficialBuildId = $"20{((datePart / 1000))}{((datePart % 1000) / 50):D2}{(datePart % 50):D2}.{buildPart}", PreReleaseVersionLabel = releaseParts[0] };
}
}
}
else if (releaseParts.Length == 4)
{
// new preview version style, e.g. 5.0.0-preview.7.20365.12
if (int.TryParse(releaseParts[2], out int datePart) && int.TryParse(releaseParts[3], out int buildPart))
{
return new DerivedVersion { OfficialBuildId = $"20{((datePart / 1000))}{((datePart % 1000) / 50):D2}{(datePart % 50):D2}.{buildPart}", PreReleaseVersionLabel = $"{releaseParts[0]}.{releaseParts[1]}" };
}
}
}
else
{
// finalized version number (x.y.z) - probably not our code
// VSTest, Application Insights, Newtonsoft.Json do this
return new DerivedVersion { OfficialBuildId = DateTime.Now.ToString("yyyyMMdd.1"), PreReleaseVersionLabel = string.Empty };
}
throw new FormatException($"Can't derive a build ID from version {version} (commit count {commitCount}, release {string.Join(";", nugetVersion.Release.Split('-', '.'))})");
}
private static string GetDefaultRepoNameFromUrl(string repoUrl)
{
if (repoUrl.EndsWith(".git"))
{
repoUrl = repoUrl.Substring(0, repoUrl.Length - ".git".Length);
}
return repoUrl.Substring(repoUrl.LastIndexOf("/") + 1);
}
private static IEnumerable<string> GetRepoNamesOrDefault(Dependency dependency)
{
return dependency.RepoNames ?? new[] { GetDefaultRepoNameFromUrl(dependency.Uri) };
}
private static string DeriveRepoGitDirPath(string gitDirPath, string repoUrl)
{
return Path.Combine(gitDirPath, $"{GetDefaultRepoNameFromUrl(repoUrl)}.git");
}
private static string DeriveRepoPath(string sourceDirPath, string repoUrl, string hash)
{
// hash could actually be a branch or tag, make it filename-safe
hash = hash.Replace('/', '-').Replace('\\', '-').Replace('?', '-').Replace('*', '-').Replace(':', '-').Replace('|', '-').Replace('"', '-').Replace('<', '-').Replace('>', '-');
return Path.Combine(sourceDirPath, $"{GetDefaultRepoNameFromUrl(repoUrl)}.{hash}");
}
private string GetCommitCount(string gitDir, string hash)
{
return RunGitCommand($"rev-list --count {hash}", gitDir: gitDir);
}
private string GetCommitDate(string gitDir, string hash)
{
return RunGitCommand($"log -1 --format=%cd --date=short {hash}", gitDir: gitDir);
}
private IEnumerable<SubmoduleInfo> GetSubmoduleInfo(string gitModulesFilePath)
{
string submoduleProps = RunGitCommand($"config --file={gitModulesFilePath} --list");
var submodulePathRegex = new Regex(@"submodule\.(?<submoduleName>.*)\.path=(?<submodulePath>.*)");
foreach (Match m in submodulePathRegex.Matches(submoduleProps))
{
yield return new SubmoduleInfo { Name = m.Groups["submoduleName"].Value, Path = m.Groups["submodulePath"].Value };
}
}
private string RunGitCommand(string command, string workTree = null, string gitDir = null)
{
// Windows Git requires these to be before the command
if (workTree != null)
{
command = $"--work-tree={workTree} {command}";
}
if (gitDir != null)
{
command = $"--git-dir={gitDir} {command}";
}
var exec = new Exec
{
BuildEngine = BuildEngine,
Command = $"git {command}",
LogStandardErrorAsError = true,
ConsoleToMSBuild = true,
};
if (!exec.Execute() || exec.ExitCode != 0)
{
string error = string.Join(Environment.NewLine, exec.ConsoleOutput.Select(o => o.ItemSpec));
throw new InvalidOperationException($"git command '{command}' failed with exit code {exec.ExitCode} and error {error ?? "<blank>"}");
}
string output = string.Join(Environment.NewLine, exec.ConsoleOutput.Select(o => o.ItemSpec));
return output.Trim();
}
private void HandleSubmodules(string sourceDirPath, string gitDirPath, Dependency dependency)
{
var gitModulesPath = Path.Combine(sourceDirPath, ".gitmodules");
foreach (SubmoduleInfo submodule in GetSubmoduleInfo(gitModulesPath))
{
WriteGitCommitMarkerFileForSubmodule(sourceDirPath, gitDirPath, dependency.Sha, submodule.Name, submodule.Path);
}
}
private void WriteGitCommitMarkerFileForSubmodule(string sourceDirPath, string gitDirPath, string parentRepoSha, string submoduleName, string submodulePath)
{
var submoduleSha = GetSubmoduleCommit(gitDirPath, parentRepoSha, submodulePath);
var headDirectory = Path.Combine(sourceDirPath, submodulePath, ".git");
var headPath = Path.Combine(headDirectory, "HEAD");
Directory.CreateDirectory(headDirectory);
File.WriteAllText(headPath, submoduleSha);
}
private static void WriteMinimalMetadata(string repoPath, string repoUrl, string hash)
{
var fakeGitDirPath = Path.Combine(repoPath, ".git");
var fakeGitConfigPath = Path.Combine(fakeGitDirPath, "config");
var fakeGitHeadPath = Path.Combine(fakeGitDirPath, "HEAD");
Directory.CreateDirectory(fakeGitDirPath);
File.WriteAllText(fakeGitHeadPath, hash);
File.WriteAllText(fakeGitConfigPath, $"[remote \"origin\"]{Environment.NewLine}url = \"{repoUrl}\"");
}
private string GetSubmoduleCommit(string gitDirPath, string parentRepoSha, string submodulePath)
{
var gitObjectList = RunGitCommand($"ls-tree {parentRepoSha} {submodulePath}", gitDir: gitDirPath);
var submoduleRegex = new Regex(@"\d{6}\s+commit\s+(?<submoduleSha>[a-fA-F0-9]{40})\s+(.+)");
var submoduleMatch = submoduleRegex.Match(gitObjectList);
if (!submoduleMatch.Success)
{
throw new InvalidDataException($"Couldn't find a submodule commit in {gitObjectList} for {submodulePath}");
}
return submoduleMatch.Groups["submoduleSha"].Value;
}
private static void WritePropsFile(string filePath, Dictionary<string, string> properties)
{
var content = new StringBuilder();
content.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
content.AppendLine("<Project>");
content.AppendLine(" <PropertyGroup>");
foreach (var propName in properties.Keys.OrderBy(k => k))
{
content.AppendLine($" <{propName}>{properties[propName]}</{propName}>");
}
content.AppendLine(" </PropertyGroup>");
content.AppendLine("</Project>");
File.WriteAllText(filePath, content.ToString());
}
private class DerivedVersion
{
internal string OfficialBuildId { get; set; }
internal string PreReleaseVersionLabel { get; set; }
}
private class SubmoduleInfo
{
internal string Name { get; set; }
internal string Path { get; set; }
}
}
}