Merge branch 'rel/2.0.3' into dev

This commit is contained in:
Nate McMaster 2017-11-08 16:27:54 -08:00
Родитель 04aad16bdb b0de6da24f
Коммит dae1f1ce78
77 изменённых файлов: 4689 добавлений и 590 удалений

6
.gitignore поставляемый
Просмотреть файл

@ -9,6 +9,8 @@ _ReSharper.*
*.pidb
*.vspx
*.psess
*.binlog
*.log
packages
target
artifacts
@ -16,6 +18,8 @@ StyleCop.Cache
node_modules
*.snk
.nuget
.r
.w
.deps
global.json
*.binlog
msbuild.ProjectImports.zip

3
.gitmodules поставляемый
Просмотреть файл

@ -170,6 +170,9 @@
path = modules/StaticFiles
url = https://github.com/aspnet/StaticFiles.git
branch = dev
[submodule "modules/Templating"]
path = modules/Templating
url = https://github.com/aspnet/Templating.git
[submodule "modules/Testing"]
path = modules/Testing
url = https://github.com/aspnet/Testing.git

6
.vscode/launch.json поставляемый
Просмотреть файл

@ -6,6 +6,12 @@
"request": "launch",
"name": "ps: Interactive Session",
"cwd": "${workspaceRoot}"
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}

Просмотреть файл

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="AspNetCore" value="https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json" />
<clear />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>

Двоичные данные
build/Key.snk Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,74 @@
<Project>
<PropertyGroup>
<_TemplatesDirectory>$(MSBuildThisFileDirectory)tools\templates\</_TemplatesDirectory>
<_WorkRoot>$(RepositoryRoot).w\</_WorkRoot>
<TimestampSource>$(RepositoryRoot).deps\Signed\Packages\</TimestampSource>
<TimestampFreeSource>$(RepositoryRoot).deps\Signed\Packages-NoTimeStamp\</TimestampFreeSource>
<TimestampOutputPackageName>nuGetPackagesArchive.timestamped</TimestampOutputPackageName>
<TimestampFreeOutputPackageName>nuGetPackagesArchive.notimestamp</TimestampFreeOutputPackageName>
</PropertyGroup>
<Target Name="BuildFallbackArchive">
<!-- Run the actual target twice, once for timestamped packages, once for non-timestamped packages -->
<!-- Here, we're re-invoking KoreBuild, but limiting it to a specific target. -->
<!-- This won't rerun the whole build, but it ensures that the necessary MSBuild Tasks and Properties are initialized -->
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_BuildFallbackArchive"
Properties="MetapackageRestoreSource=$(TimestampSource);OutputPackageName=$(TimestampOutputPackageName);RemoveTimestamp=false;MetapackageVersion=$(PackageVersion)" />
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_BuildFallbackArchive"
Properties="MetapackageRestoreSource=$(TimestampFreeSource);OutputPackageName=$(TimestampFreeOutputPackageName);RemoveTimestamp=true;MetapackageVersion=$(PackageVersionNoTimestamp)" />
</Target>
<Target Name="_BuildFallbackArchive" DependsOnTargets="ResolveRepoInfo">
<Error Text="MetapackageRestoreSource must be specified" Condition=" '$(MetapackageRestoreSource)' == '' " />
<Error Text="OutputPackageName must be specified" Condition=" '$(OutputPackageName)' == '' " />
<Error Text="ArchiverPath must be specified" Condition=" '$(ArchiverPath)' == '' " />
<Error Text="Archiver not found at $(ArchiverPath)" Condition="!Exists('$(ArchiverPath)')" />
<!-- Clear the directories -->
<RemoveDir Directories="$(_WorkRoot)" />
<!-- Copy the archive template -->
<Copy SourceFiles="$(_TemplatesDirectory)Archive\Archive.csproj" DestinationFiles="$(_WorkRoot)Archive.csproj" />
<!-- Copy the archive template -->
<RepoTasks.AddArchiveReferences
ReferencePackagePath="$(_WorkRoot)Archive.csproj"
BuildArtifacts="@(ArtifactInfo)"
PackageArtifacts="@(PackageArtifact)"
ExternalDependencies="@(ExternalDependency)"
RemoveTimestamp="$(RemoveTimestamp)"
MetapackageVersion="$(MetapackageVersion)" />
<PropertyGroup>
<FallbackStagingDir>$(_WorkRoot)obj\$(OutputPackageName)</FallbackStagingDir>
<FallbackOutputDir>$(ArtifactsDir)lzma\</FallbackOutputDir>
<FallbackOutputPath>$(FallbackOutputDir)$(OutputPackageName).lzma</FallbackOutputPath>
<GeneratedFallbackRestoreSourcesPropsPath>$(_WorkRoot)restoresources.$(OutputPackageName).props</GeneratedFallbackRestoreSourcesPropsPath>
</PropertyGroup>
<ItemGroup>
<_FallbackArchiveRestoreSources Include="$(MetapackageRestoreSource)" Condition="Exists($(MetapackageRestoreSource))" />
<_FallbackArchiveRestoreSources Include="$(_DependencyMirrorDirectory)" Condition="Exists($(_DependencyMirrorDirectory))" />
</ItemGroup>
<RepoTasks.GenerateRestoreSourcesPropsFile
Sources="@(_FallbackArchiveRestoreSources)"
OutputPath="$(GeneratedFallbackRestoreSourcesPropsPath)" />
<!-- Create the Staging Dir -->
<MakeDir Directories="$(FallbackStagingDir);$(FallbackOutputDir)" />
<!-- Restore the target project -->
<MSBuild
Projects="$(_WorkRoot)Archive.csproj"
Targets="Restore"
Properties="RestorePackagesPath=$(FallbackStagingDir);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp20PackageVersion);DotNetRestoreSourcePropsPath=$(GeneratedFallbackRestoreSourcesPropsPath);AspNetUniverseBuildOffline=true" />
<!-- Create the archive -->
<Exec Command="$(ArchiverPath) -a $(FallbackOutputPath) $(FallbackStagingDir)" />
</Target>
</Project>

Просмотреть файл

@ -2,11 +2,11 @@
<Target Name="_BuildRepositories" DependsOnTargets="GenerateLineup">
<ItemGroup>
<BatchedRepository Include="$(MSBuildProjectFullPath)">
<BuildGroup>%(RepositoryToBuildInOrder.Order)</BuildGroup>
<Repository>%(RepositoryToBuildInOrder.Identity)</Repository>
<BuildGroup>%(RepositoryBuildOrder.Order)</BuildGroup>
<Repository>%(RepositoryBuildOrder.Identity)</Repository>
<AdditionalProperties>
RepositoryToBuild=%(RepositoryToBuildInOrder.Identity);
BuildRepositoryRoot=$([MSBuild]::NormalizeDirectory(%(RepositoryToBuildInOrder.RootPath)))
RepositoryToBuild=%(RepositoryBuildOrder.Identity);
BuildRepositoryRoot=$([MSBuild]::NormalizeDirectory(%(RepositoryBuildOrder.RootPath)))
</AdditionalProperties>
</BatchedRepository>
</ItemGroup>
@ -16,20 +16,34 @@
<BatchBuilds Condition="'$(BatchBuilds)'==''">false</BatchBuilds>
</PropertyGroup>
<ItemGroup>
<PinnedArtifactInfo Include="@(ArtifactInfo)" Condition="'$(BuildGraphOf)' == ''" />
</ItemGroup>
<!-- If we are building a sub-graph, we need to re-examine the list of artifacts that will actual build. -->
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="GetArtifactInfo"
Properties="RepositoryRoot=$(SubmoduleRoot)%(RepositoryBuildOrder.Identity)\;Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
Condition="'$(BuildGraphOf)' != ''">
<Output TaskParameter="TargetOutputs" ItemName="PinnedArtifactInfo" />
</MSBuild>
<MSBuild
Projects="@(BatchedRepository)"
BuildInParallel="$(BatchBuilds)"
StopOnFirstFailure="true"
Targets="_BuildRepository"
Properties="BuildGroup=%(BatchedRepository.BuildGroup);BuildNumber=$(BuildNumber)" />
Properties="BuildGroup=%(BatchedRepository.BuildGroup);BuildNumber=$(BuildNumber);IsFinalBuild=$(IsFinalBuild);Configuration=$(Configuration)" />
</Target>
<Target Name="_BuildRepository">
<PropertyGroup>
<!-- Should reduce allowable package feeds to only nuget.org. -->
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:AspNetUniverseBuildOffline=true</RepositoryBuildArguments>
<!-- If there are duplicate properties, the properties which are defined later in the order would override the earlier ones -->
<RepositoryBuildArguments>$(RepositoryBuildArguments) '/p:DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)'</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:Configuration=$(Configuration)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber) /p:Configuration=$(Configuration)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'</RepositoryBuildArguments>
<BuildArguments>$(_RepositoryBuildTargets) $(RepositoryBuildArguments)</BuildArguments>

241
build/RuntimeStore.targets Normal file
Просмотреть файл

@ -0,0 +1,241 @@
<Project>
<Import Project="common.props" />
<PropertyGroup>
<_DependencyBuildDirectory>$(RepositoryRoot).deps\build\</_DependencyBuildDirectory>
<_DependencyMirrorDirectory>$(RepositoryRoot).deps\mirror\</_DependencyMirrorDirectory>
<_BuildScriptsDirectory>$(MSBuildThisFileDirectory)tools\scripts\</_BuildScriptsDirectory>
<_WorkRoot>$(RepositoryRoot).w\</_WorkRoot>
<_RuntimeStoreWorkDirectory>$(_WorkRoot).rw\</_RuntimeStoreWorkDirectory>
<_RuntimeStoreOutputDirectory>$(_WorkRoot).ro\</_RuntimeStoreOutputDirectory>
<_TemplatesDirectory>$(MSBuildThisFileDirectory)tools\templates\</_TemplatesDirectory>
<_SrcDirectory>$(RepositoryRoot)src\</_SrcDirectory>
<_AllMetapackageDirectory>$(_SrcDirectory)Microsoft.AspNetCore.All\</_AllMetapackageDirectory>
<_ExistingManifestsDirectory>$(_AllMetapackageDirectory)build\</_ExistingManifestsDirectory>
<_ArtifactsZipDirectory>$(ArtifactsDir)zip\</_ArtifactsZipDirectory>
<_StoreZipDirectory>$(_ArtifactsZipDirectory)rs\</_StoreZipDirectory>
<_SymbolsZipDirectory>$(_ArtifactsZipDirectory)symbols\</_SymbolsZipDirectory>
<_DepsOutputDirectory>$(ArtifactsDir)deps\</_DepsOutputDirectory>
</PropertyGroup>
<Target Name="BuildAllMetapackage" DependsOnTargets="ResolveRepoInfo">
<!-- Clear working directory -->
<RemoveDir Directories="$(_WorkRoot)" />
<!-- Move to working dir -->
<PropertyGroup>
<MetapackageWorkDirectory>$(_WorkRoot)Microsoft.AspNetCore.All\</MetapackageWorkDirectory>
</PropertyGroup>
<ItemGroup>
<AllMetapackageFiles Include="$(_AllMetapackageDirectory)**\*" />
</ItemGroup>
<Copy SourceFiles="@(AllMetapackageFiles)" DestinationFolder="$(MetapackageWorkDirectory)\%(RecursiveDir)" />
<Copy SourceFiles="$(_SrcDirectory)Directory.Build.props" DestinationFolder="$(_WorkRoot)" />
<!-- Add references to project -->
<RepoTasks.AddMetapackageReferences
ReferencePackagePath="$(MetapackageWorkDirectory)Microsoft.AspNetCore.All.csproj"
BuildArtifacts="@(ArtifactInfo)"
PackageArtifacts="@(PackageArtifact)"
ExternalDependencies="@(ExternalDependency)" />
<!-- Set _Target=Restore so the project will be re-evaluated to include Internal.AspNetCore.Sdk MSBuild properties on the next step. -->
<MSBuild Projects="$(MetapackageWorkDirectory)Microsoft.AspNetCore.All.csproj"
Targets="Restore"
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);AspNetUniverseBuildOffline=true;_Target=Restore" />
<!-- Pack -->
<MSBuild Projects="$(MetapackageWorkDirectory)Microsoft.AspNetCore.All.csproj"
Targets="Pack"
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);AspNetUniverseBuildOffline=true" />
<!-- Copy to output directory -->
<ItemGroup>
<AllMetapackageNupkgFile Include="$(MetapackageWorkDirectory)**\*.nupkg" />
</ItemGroup>
<Copy SourceFiles="@(AllMetapackageNupkgFile)" DestinationFolder="$(BuildDir)" />
</Target>
<Target Name="BuildRSReferencesPackage" DependsOnTargets="ResolveRepoInfo;_PrepareRuntimeStoreBuildAssets">
<!-- Clear working directory -->
<RemoveDir Directories="$(_WorkRoot)" />
<!-- Move to working dir -->
<PropertyGroup>
<RSReferencesWorkDirectory>$(_WorkRoot)RS.References\</RSReferencesWorkDirectory>
</PropertyGroup>
<Copy SourceFiles="$(_TemplatesDirectory)RS.References\RS.References.csproj" DestinationFolder="$(RSReferencesWorkDirectory)" />
<Copy SourceFiles="$(_SrcDirectory)Directory.Build.props" DestinationFolder="$(_WorkRoot)" />
<!-- Generate RS.Reference project -->
<RepoTasks.AddRSReferences
ReferencePackagePath="$(RSReferencesWorkDirectory)RS.References.csproj"
BuildArtifacts="@(ArtifactInfo)"
PackageArtifacts="@(PackageArtifact)"
ExternalDependencies="@(ExternalDependency)" />
<!-- Set _Target=Restore so the project will be re-evaluated to include Internal.AspNetCore.Sdk MSBuild properties on the next step. -->
<MSBuild Projects="$(RSReferencesWorkDirectory)RS.References.csproj"
Targets="Restore"
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);_Target=Restore" />
<!-- Pack -->
<MSBuild Projects="$(RSReferencesWorkDirectory)RS.References.csproj"
Targets="Pack"
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)" />
<!-- Copy to output directory -->
<ItemGroup>
<RSReferenceNupkgFile Include="$(RSReferencesWorkDirectory)**\*.nupkg" />
</ItemGroup>
<Copy SourceFiles="@(RSReferenceNupkgFile)" DestinationFolder="$(_DependencyBuildDirectory)" />
</Target>
<Target Name="_PrepareRuntimeStoreBuildAssets">
<ItemGroup>
<_RuntimeStoreRestoreSources Include="$(_DependencyBuildDirectory)" Condition="Exists($(_DependencyBuildDirectory))" />
<_RuntimeStoreRestoreSources Include="$(_DependencyMirrorDirectory)" Condition="Exists($(_DependencyMirrorDirectory))" />
<_RuntimeStoreRestoreSources Include="$(BuildDir)" Condition="Exists($(BuildDir))" />
</ItemGroup>
<RepoTasks.GenerateRestoreSourcesPropsFile
Sources="@(_RuntimeStoreRestoreSources)"
OutputPath="$(GeneratedRestoreSourcesPropsPath)" />
<PropertyGroup>
<_RsManifestProps>MicrosoftAspNetCoreAllPackageVersion=$(PackageVersion)</_RsManifestProps>
<_RsManifestProps>$(_RsManifestProps);DotNetRestoreSourcesPropsPath=$(GeneratedRestoreSourcesPropsPath)</_RsManifestProps>
</PropertyGroup>
</Target>
<Target Name="_ResolveRuntimeStoreRID">
<Error Text="Please specify the platform for the runtime package store via RuntimeStoreArch: {x64|x86}." Condition="'$(RuntimeStoreArch)' == ''"/>
<PropertyGroup>
<RuntimeStoreRID Condition="$([MSBuild]::IsOSPlatform('Windows'))">win7-$(RuntimeStoreArch)</RuntimeStoreRID>
<RuntimeStoreRID Condition="$([MSBuild]::IsOSPlatform('Linux'))">linux-$(RuntimeStoreArch)</RuntimeStoreRID>
<RuntimeStoreRID Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx-$(RuntimeStoreArch)</RuntimeStoreRID>
</PropertyGroup>
</Target>
<Target Name="BuildRuntimeStore" DependsOnTargets="_ResolveRuntimeStoreRID;_PrepareRuntimeStoreBuildAssets;BuildRSReferencesPackage">
<!-- Copy and update build assets -->
<Copy SourceFiles="$(_TemplatesDirectory)RS.Manifest\RS.Manifest.csproj" DestinationFiles="$(_WorkRoot)RS.Manifest\RS.Manifest.csproj" />
<Copy SourceFiles="$(_SrcDirectory)Directory.Build.props" DestinationFolder="$(_WorkRoot)" />
<PropertyGroup>
<__ComposeStoreProps />
<_ComposeStoreProps>$(_ComposeStoreProps);$(_RsManifestProps)</_ComposeStoreProps>
<_ComposeStoreProps>$(_ComposeStoreProps);ComposeDir=$(_RuntimeStoreOutputDirectory)</_ComposeStoreProps>
<_ComposeStoreProps>$(_ComposeStoreProps);ComposeWorkingDir=$(_RuntimeStoreWorkDirectory)</_ComposeStoreProps>
<_ComposeStoreProps>$(_ComposeStoreProps);RuntimeIdentifier=$(RuntimeStoreRID)</_ComposeStoreProps>
<_ComposeStoreProps>$(_ComposeStoreProps);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp20PackageVersion)</_ComposeStoreProps>
</PropertyGroup>
<!-- Build runtime store -->
<MSBuild Projects="$(_WorkRoot)RS.Manifest\RS.Manifest.csproj"
Targets="ComposeStore"
Properties="$(_ComposeStoreProps)" />
</Target>
<Target Name="BuildHostingDeps" DependsOnTargets="ResolveRepoInfo">
<!-- Generate RS.Reference project -->
<RepoTasks.ResolveHostingStartupPackages
BuildArtifacts="@(ArtifactInfo)"
PackageArtifacts="@(PackageArtifact)">
<Output TaskParameter="HostingStartupArtifacts" ItemName="HostingStartupArtifacts" />
</RepoTasks.ResolveHostingStartupPackages>
<!--- MSBuild caches things if you run inproc so have to use Exec -->
<MSBuild Projects="$(_TemplatesDirectory)HostingStartup/HostingStartup.csproj"
Targets="Restore;Rebuild;CollectDeps"
Properties="DepsOutputPath=$(_DepsOutputDirectory);HostingStartupPackageName=%(HostingStartupArtifacts.PackageId);HostingStartupPackageVersion=%(HostingStartupArtifacts.Version);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp20PackageVersion)" />
<ItemGroup>
<DepsFiles Include="$(_DepsOutputDirectory)**\*.deps.json" />
</ItemGroup>
<RepoTasks.TrimDeps DepsFiles="@(DepsFiles)" />
</Target>
<Target Name="PackRuntimeStore" DependsOnTargets="_ResolveRuntimeStoreRID">
<PropertyGroup>
<OutputZip>$(ArtifactsDir)aspnetcore-store-$(PackageVersion)-$(RuntimeStoreRID).zip</OutputZip>
<OutputSymbolZip>$(ArtifactsDir)aspnetcore-symbols-$(PackageVersion)-$(RuntimeStoreRID).zip</OutputSymbolZip>
</PropertyGroup>
<ItemGroup>
<RuntimeStoreManifestFiles Include="$(_RuntimeStoreOutputDirectory)**\artifact.xml" />
<RuntimeStoreFiles Include="$(_RuntimeStoreOutputDirectory)**\*" Exclude="$(_RuntimeStoreOutputDirectory)**\artifact.xml;$(_RuntimeStoreOutputDirectory)symbols\**\*" />
<RuntimeStoreSymbolFiles Include="$(_RuntimeStoreOutputDirectory)symbols\**\*" />
<DepsFiles Include="$(_DepsOutputDirectory)**\*" />
<ExistingStoreManifests Include="$(_ExistingManifestsDirectory)*.xml" />
</ItemGroup>
<!-- Compose new store and symbols -->
<RepoTasks.ComposeNewStore
ExistingManifests="@(ExistingStoreManifests)"
NewManifests="@(RuntimeStoreManifestFiles)"
RuntimeStoreFiles="@(RuntimeStoreFiles)"
RuntimeStoreSymbolFiles="@(RuntimeStoreSymbolFiles)"
ManifestDestination="$(ArtifactsDir)aspnetcore-store-$(PackageVersion)-$(RuntimeStoreRID).xml"
StoreDestination="$(_StoreZipDirectory)store\"
SymbolsDestination="$(_SymbolsZipDirectory)"/>
<!-- Insert deps files -->
<Copy SourceFiles="@(DepsFiles)" DestinationFolder="$(_StoreZipDirectory)additionalDeps\%(RecursiveDir)" />
<ItemGroup>
<OutputZipFiles Include="$(_StoreZipDirectory)**\*" />
<OutputSymbolZipFiles Include="$(_SymbolsZipDirectory)**\*" />
</ItemGroup>
<!-- Create zips -->
<ZipArchive File="$(OutputZip)" SourceFiles="@(OutputZipFiles)" WorkingDirectory="$(_StoreZipDirectory)" Overwrite="true"/>
<ZipArchive File="$(OutputSymbolZip)" SourceFiles="@(OutputSymbolZipFiles)" WorkingDirectory="$(_SymbolsZipDirectory)" Overwrite="true" Condition="'@(OutputSymbolZipFiles)' != ''"/>
</Target>
<Target Name="CreateCommonManifest" DependsOnTargets="_PrepareRuntimeStoreBuildAssets">
<PropertyGroup>
<CommonManifestFileName>aspnetcore-store-$(PackageVersion)-common.xml</CommonManifestFileName>
</PropertyGroup>
<!-- Trim packages guaranteed to be in the runtime but isn't included in our runtime store -->
<ItemGroup>
<PackagesToTrim Include="runtime.win-arm64.runtime.native.system.data.sqlclient.sni" />
</ItemGroup>
<MSBuild Projects="$(_WorkRoot)RS.Manifest\RS.Manifest.csproj"
Targets="Restore;GetPackageDefinitions"
Properties="$(_RsManifestProps)" >
<Output TaskParameter="TargetOutputs" ItemName="_PackageDefinitions" />
</MSBuild>
<RepoTasks.CreateCommonManifest DestinationFilePath="$(ArtifactsDir)$(CommonManifestFileName)" PackageDefinitions="@(_PackageDefinitions)" Packages="@(PackagesToTrim)"/>
</Target>
<Target Name="AddManifestsToMetapackage">
<ItemGroup>
<MetaPackageNupkg Include="$(_DependencyBuildDirectory)Microsoft.AspNetCore.All.*.nupkg" />
<ManifestFiles Include="$(ArtifactsDir)*.xml"/>
</ItemGroup>
<RemoveDir Directories="$(_WorkRoot)" />
<UnzipArchive File="%(MetaPackageNupkg.FullPath)" Destination="$(_WorkRoot)" />
<!-- Create a consolidated manifest and place in metapackage -->
<RepoTasks.ConsolidateManifests
Manifests="@(ManifestFiles)"
ManifestDestination="$(_WorkRoot)\build\aspnetcore-store-$(PackageVersion).xml"/>
<ItemGroup>
<ArchiveFiles Include="$(_WorkRoot)**\*" />
</ItemGroup>
<ZipArchive File="$(ArtifactsDir)%(MetaPackageNupkg.FileName)%(MetaPackageNupkg.Extension)" SourceFiles="@(ArchiveFiles)" WorkingDirectory="$(_WorkRoot)" Overwrite="true" />
</Target>
</Project>

Просмотреть файл

@ -0,0 +1,528 @@
<Project>
<PropertyGroup>
<_TemplatesDirectory>$(MSBuildThisFileDirectory)tools\templates\</_TemplatesDirectory>
<_DockerDir>$(MSBuildThisFileDirectory)tools\docker\</_DockerDir>
<_PackagingDir>$(MSBuildThisFileDirectory)tools\packaging\</_PackagingDir>
<_DebToolDir>$(MSBuildThisFileDirectory)tools\dotnet-deb-tool-consumer\</_DebToolDir>
<_TimestampRSSource>$(RepositoryRoot).deps\Signed\Store\</_TimestampRSSource>
<_TimestampFreeRSSource>$(RepositoryRoot).deps\Signed\Store-TimestampFree\</_TimestampFreeRSSource>
<_InstallerSource>$(RepositoryRoot).deps\Installers\</_InstallerSource>
<_WorkRoot>$(RepositoryRoot).w\</_WorkRoot>
<_WorkLayoutDir>$(_WorkRoot).l\</_WorkLayoutDir>
<_WorkOutputDir>$(_WorkRoot).o\</_WorkOutputDir>
<_DockerRootDirectory>/opt/code/</_DockerRootDirectory>
<_InstallersOutputDir>$(ArtifactsDir)installers\</_InstallersOutputDir>
<RSInstallerName>aspnetcore-store</RSInstallerName>
<HostingInstallerName>dotnet-hosting</HostingInstallerName>
<RSDebConfigFile>$(_PackagingDir)store_debian_config.json</RSDebConfigFile>
<HostingDebConfigFile>$(_PackagingDir)hosting_debian_config.json</HostingDebConfigFile>
<PublicCoreFeedPrefix>https://dotnetcli.blob.core.windows.net/dotnet</PublicCoreFeedPrefix>
<CoreFeedPrefix Condition="'$(KOREBUILD_DOTNET_FEED_UNCACHED)'!=''">$(KOREBUILD_DOTNET_FEED_UNCACHED)</CoreFeedPrefix>
<CoreFeedPrefix Condition="'$(CoreFeedPrefix)'==''">$(PublicCoreFeedPrefix)</CoreFeedPrefix>
<RuntimeStore200LinkPrefix>$(PublicCoreFeedPrefix)/aspnetcore/store/2.0.0-26452/Build.RS.</RuntimeStore200LinkPrefix>
<RuntimeTargzLink>$(CoreFeedPrefix)/Runtime/$(MicrosoftNETCoreApp20PackageVersion)/dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)-linux-x64.tar.gz</RuntimeTargzLink>
<TimestampRSArchive>$(_TimestampRSSource)aspnetcore-store-$(PackageVersion)-linux-x64.tar.gz</TimestampRSArchive>
<TimestampFreeRSArchivePrefix>$(_TimestampFreeRSSource)aspnetcore-store-$(PackageVersionNoTimestamp)-</TimestampFreeRSArchivePrefix>
<TimestampFreeLinuxRSArchive>$(TimestampFreeRSArchivePrefix)linux-x64.tar.gz</TimestampFreeLinuxRSArchive>
</PropertyGroup>
<Target Name="BuildInstallers" DependsOnTargets="GenerateTargzs;GenerateRpms;GenerateDebs;GenerateRelabledInstallers" />
<Target Name="_EnsureInstallerPrerequisites">
<MakeDir Directories="$(_InstallersOutputDir)" />
<!-- Check Docker server OS -->
<Exec Command="docker version -f &quot;{{.Server.Os}}&quot;" StandardOutputImportance="Normal" ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="DockerHostOS" />
</Exec>
<Error Text="Docker host must be using Linux containers." Condition="'$(DockerHostOS)' != 'linux'"/>
<Error
Text="Timestamp linux archive not found. Expected it to exist in $(TimestampRSArchive)."
Condition="!Exists('$(TimestampRSArchive)')" />
<Error
Text="Non-timestamp linux archive not found. Expected it to exist in $(TimestampFreeLinuxRSArchive)."
Condition="!Exists('$(TimestampFreeLinuxRSArchive)')" />
<Error
Text="Non-timestamp osx archive not found. Expected it to exist in $(TimestampFreeRSArchivePrefix)osx-x64.tar.gz."
Condition="!Exists('$(TimestampFreeRSArchivePrefix)osx-x64.tar.gz')" />
<Error
Text="Non-timestamp winx64 archive not found. Expected it to exist in $(TimestampFreeRSArchivePrefix)win7-x64.zip."
Condition="!Exists('$(TimestampFreeRSArchivePrefix)win7-x64.zip')" />
<Error
Text="Non-timestamp winx86 archive not found. Expected it to exist in $(TimestampFreeRSArchivePrefix)win7-x86.zip."
Condition="!Exists('$(TimestampFreeRSArchivePrefix)win7-x86.zip')" />
</Target>
<Target Name="_EnsureInstallerDirectory" >
<!-- Download dotnet installers -->
<MakeDir Directories="$(_InstallerSource)" />
</Target>
<Target Name="_DownloadInstallers" DependsOnTargets="_EnsureInstallerDirectory">
<!-- Download dotnet installers -->
<MakeDir Directories="$(_InstallerSource)" />
<!--
Note: KOREBUILD_DOTNET_FEED_CREDENTIAL is intentionally NOT an MSBuild variable.
MSBuild doesn't to the substitution correctly because the string contains %,
so we'll let bash do it instead.
-->
<Exec Command="curl --fail -sSL &quot;$(RuntimeTargzLink)$KOREBUILD_DOTNET_FEED_CREDENTIAL&quot; -o $(_InstallerSource)dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)-linux-x64.tar.gz" />
<Exec Command="curl --fail -sSL &quot;$(RuntimeStore200LinkPrefix)linux.tar.gz&quot; -o $(_InstallerSource)Build.RS.linux.tar.gz" />
</Target>
<Target Name="_GenerateTargz">
<!-- Clear working directory -->
<RemoveDir Directories="$(_WorkRoot)" />
<MakeDir Directories="$(_WorkRoot)" />
<!-- Create layout: Aspnet Hosting Bundle -->
<Exec Command="tar -xzf $(RSArchive) -C $(_WorkRoot)" />
<ItemGroup>
<Archives Include="$(DependentArchives)" />
</ItemGroup>
<Exec Command="tar -xzf %(Archives.Identity) -C $(_WorkRoot)" />
<!-- Create Aspnet Hosting Bundle tar.gz -->
<Exec Command="tar -czvf $(_InstallersOutputDir)$(OutputArchiveName) ." WorkingDirectory="$(_WorkRoot)"/>
</Target>
<Target Name="_GenerateZip">
<!-- Clear working directory -->
<RemoveDir Directories="$(_WorkRoot)" />
<MakeDir Directories="$(_WorkRoot)" />
<!-- Create layout -->
<UnzipArchive File="$(RSArchive)" Destination="$(_WorkRoot)" />
<ItemGroup>
<Archives Include="$(DependentArchives)" />
</ItemGroup>
<UnzipArchive File="%(Archives.Identity)" Destination="$(_WorkRoot)" />
<ItemGroup>
<ArchiveFiles Include="$(_WorkRoot)**\*" />
</ItemGroup>
<!-- Create Zip -->
<ZipArchive File="$(_InstallersOutputDir)$(OutputArchiveName)" SourceFiles="@(ArchiveFiles)" WorkingDirectory="$(_WorkRoot)" Overwrite="true" />
</Target>
<Target Name="GenerateTargzs" DependsOnTargets="_EnsureInstallerPrerequisites;_DownloadInstallers">
<ItemGroup>
<_DependentArchives Include="$(_InstallerSource)dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)-linux-x64.tar.gz" />
<_DependentArchives Include="$(_InstallerSource)Build.RS.linux.tar.gz" />
</ItemGroup>
<PropertyGroup>
<DependentArchives>@(_DependentArchives)</DependentArchives>
<HostingArchiveName>$(HostingInstallerName)-$(Version)-linux-x64.tar.gz</HostingArchiveName>
<TimestampFreeHostingArchiveName>$(HostingInstallerName)-$(PackageVersionNoTimestamp)-linux-x64.tar.gz</TimestampFreeHostingArchiveName>
</PropertyGroup>
<!-- Timestamp hosting bundle -->
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_GenerateTargz"
Properties="DependentArchives=$(DependentArchives);RSArchive=$(TimestampRSArchive);OutputArchiveName=$(HostingArchiveName)" />
<!-- Timestamp free hosting bundle -->
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_GenerateTargz"
Properties="DependentArchives=$(DependentArchives);RSArchive=$(TimestampFreeLinuxRSArchive);OutputArchiveName=$(TimestampFreeHostingArchiveName)" />
</Target>
<Target Name="_DownloadAdditionalRSZips" DependsOnTargets="_EnsureInstallerDirectory;_DownloadInstallers">
<Exec Command="curl --fail -sSL &quot;$(RuntimeStore200LinkPrefix)osx.tar.gz&quot; -o $(_InstallerSource)Build.RS.osx.tar.gz" />
<Exec Command="curl --fail -sSL &quot;$(RuntimeStore200LinkPrefix)winx64.zip&quot; -o $(_InstallerSource)Build.RS.winx64.zip" />
<Exec Command="curl --fail -sSL &quot;$(RuntimeStore200LinkPrefix)winx86.zip&quot; -o $(_InstallerSource)Build.RS.winx86.zip" />
</Target>
<Target Name="GenerateCumulativeArchives" DependsOnTargets="_EnsureInstallerPrerequisites;_DownloadAdditionalRSZips">
<!-- Temporary: Generate time stamp free cumulative zips with old naming scheme -->
<ItemGroup>
<TargzArchives Include="Build.RS.linux.tar.gz">
<RSArchive>$(TimestampFreeRSArchivePrefix)linux-x64.tar.gz</RSArchive>
</TargzArchives>
<TargzArchives Include="Build.RS.osx.tar.gz">
<RSArchive>$(TimestampFreeRSArchivePrefix)osx-x64.tar.gz</RSArchive>
</TargzArchives>
<ZipArchives Include="Build.RS.winx64.zip">
<RSArchive>$(TimestampFreeRSArchivePrefix)win7-x64.zip</RSArchive>
</ZipArchives>
<ZipArchives Include="Build.RS.winx86.zip">
<RSArchive>$(TimestampFreeRSArchivePrefix)win7-x86.zip</RSArchive>
</ZipArchives>
</ItemGroup>
<!-- Targz -->
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_GenerateTargz"
Properties="DependentArchives=$(_InstallerSource)%(TargzArchives.Identity);RSArchive=%(TargzArchives.RSArchive);OutputArchiveName=%(TargzArchives.Identity)" />
<!-- Targz -->
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_GenerateZip"
Properties="DependentArchives=$(_InstallerSource)%(ZipArchives.Identity);RSArchive=%(ZipArchives.RSArchive);OutputArchiveName=%(ZipArchives.Identity)" />
</Target>
<Target Name="_BuildDockerImage">
<Exec
Command="docker build --build-arg USER_ID=%24(id -u) -t docker-image-$(Image) $(Image)"
WorkingDirectory="$(_DockerDir)" />
</Target>
<Target Name="_RemoveDockerImage">
<Exec Command="docker rmi docker-image-$(Image)" />
</Target>
<Target Name="_GenerateRpm">
<!-- Clear working directory -->
<RemoveDir Directories="$(_WorkRoot)" />
<MakeDir Directories="$(_WorkRoot)" />
<!-- Create layout: Extract archive if given -->
<MakeDir Directories="$(_WorkRoot)package_root\" />
<Exec Command="tar -xzf $(RSArchive) -C $(_WorkRoot)package_root\" Condition="'$(RSArchive)'!=''" />
<!-- Create layout: Place changelog -->
<Copy
SourceFiles="$(_PackagingDir)changelog"
DestinationFiles="$(_WorkRoot)templates/changelog"
OverwriteReadOnlyFiles="True"
SkipUnchangedFiles="False"
UseHardlinksIfPossible="False" />
<ItemGroup>
<ChangelogItems Include="DATE" Replacement="$([System.DateTime]::UtcNow.ToString(ddd MMM dd yyyy))" />
<ChangelogItems Include="MAINTAINER_NAME" Replacement="$(MaintainerName)" />
<ChangelogItems Include="MAINTAINER_EMAIL" Replacement="$(MaintainerEmail)" />
<ChangelogItems Include="PACKAGE_VERSION" Replacement="$(RPMVersion)" />
<ChangelogItems Include="PACKAGE_REVISION" Replacement="$(RPMRevision)" />
</ItemGroup>
<!-- Update Date, Maintainer, Version, Revision and Changelog Message -->
<RepoTasks.ReplaceInFile Filename="$(_WorkRoot)templates/changelog" Items="@(ChangelogItems)" />
<!-- Update Maintainer and Summary -->
<PropertyGroup>
<RPMMaintainer>$(MaintainerName) &lt;$(MaintainerEmail)&gt;</RPMMaintainer>
<RPMSummary>$(RPMSummary.Replace('DEB_VERSION','$(RPMVersion)'))</RPMSummary>
</PropertyGroup>
<!-- Run RPM -->
<Exec Command="docker run
--rm
-v $(RepositoryRoot):$(_DockerRootDirectory)
docker-image-$(Image)
fpm
--verbose
-s dir
-t rpm
-n $(RPMInstallerPrefix)-$(RPMVersion)
-p $(_DockerRootDirectory)artifacts/installers/$(RPMInstallerPrefix)-$(RPMVersion)-$(RPMFileSuffix)
-v $(RPMVersion)
--iteration $(RPMRevision)
-a amd64
$(RPMArguments)
--rpm-changelog $(_DockerRootDirectory).w/templates/changelog
--rpm-summary &quot;$(RPMSummary)&quot;
--description &quot;$(RPMDescription)&quot;
--maintainer &quot;$(RPMMaintainer)&quot;
--vendor &quot;$(RPMVendor)&quot;
--license &quot;$(RPMLicense)&quot;
--url &quot;$(RPMHomepage)&quot;
$(_DockerRootDirectory).w/package_root/=&quot;$(RPMInstallRoot)&quot;" />
</Target>
<Target Name="GenerateRpms" DependsOnTargets="_EnsureInstallerPrerequisites">
<PropertyGroup>
<Image>rhel.7</Image>
<RPMVendor>.NET Foundation</RPMVendor>
<RHInstallerInstallRoot>/opt/rh/rh-dotnet20/root/usr/lib64/dotnet/</RHInstallerInstallRoot>
<GenericInstallerInstallRoot>/usr/share/dotnet/</GenericInstallerInstallRoot>
</PropertyGroup>
<!-- Build Docker Image -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildDockerImage" Properties="Image=$(Image)" />
<!-- Common installer parameters -->
<JsonPeek Query="$.short_description" JsonInputPath="$(RSDebConfigFile)">
<Output TaskParameter="Result" ItemName="_RSInstallerSummary" />
</JsonPeek>
<JsonPeek Query="$.long_description" JsonInputPath="$(RSDebConfigFile)">
<Output TaskParameter="Result" ItemName="_RSDescription" />
</JsonPeek>
<JsonPeek Query="$.license.type" JsonInputPath="$(RSDebConfigFile)">
<Output TaskParameter="Result" ItemName="_RSLicense" />
</JsonPeek>
<JsonPeek Query="$.release.package_revision" JsonInputPath="$(RSDebConfigFile)">
<Output TaskParameter="Result" ItemName="_RSPackageRevision" />
</JsonPeek>
<JsonPeek Query="$.homepage" JsonInputPath="$(RSDebConfigFile)">
<Output TaskParameter="Result" ItemName="_RSHomepage" />
</JsonPeek>
<JsonPeek Query="$.maintainer_name" JsonInputPath="$(RSDebConfigFile)">
<Output TaskParameter="Result" ItemName="_RSMaintainerName" />
</JsonPeek>
<JsonPeek Query="$.maintainer_email" JsonInputPath="$(RSDebConfigFile)">
<Output TaskParameter="Result" ItemName="_RSMaintainerEmail" />
</JsonPeek>
<JsonPeek Query="$.short_description" JsonInputPath="$(HostingDebConfigFile)">
<Output TaskParameter="Result" ItemName="_HostingSummary" />
</JsonPeek>
<JsonPeek Query="$.long_description" JsonInputPath="$(HostingDebConfigFile)">
<Output TaskParameter="Result" ItemName="_HostingDescription" />
</JsonPeek>
<JsonPeek Query="$.license.type" JsonInputPath="$(HostingDebConfigFile)">
<Output TaskParameter="Result" ItemName="_HostingLicense" />
</JsonPeek>
<JsonPeek Query="$.release.package_revision" JsonInputPath="$(HostingDebConfigFile)">
<Output TaskParameter="Result" ItemName="_HostingRevision" />
</JsonPeek>
<JsonPeek Query="$.homepage" JsonInputPath="$(HostingDebConfigFile)">
<Output TaskParameter="Result" ItemName="_HostingHomepage" />
</JsonPeek>
<JsonPeek Query="$.maintainer_name" JsonInputPath="$(HostingDebConfigFile)">
<Output TaskParameter="Result" ItemName="_HostingMaintainerName" />
</JsonPeek>
<JsonPeek Query="$.maintainer_email" JsonInputPath="$(HostingDebConfigFile)">
<Output TaskParameter="Result" ItemName="_HostingMaintainerEmail" />
</JsonPeek>
<ItemGroup>
<RHStoreDirectories Include="$(RHInstallerInstallRoot)additionalDeps" />
<RHStoreDirectories Include="$(RHInstallerInstallRoot)store" />
<GenericStoreDirectories Include="$(GenericInstallerInstallRoot)additionalDeps" />
<GenericStoreDirectories Include="$(GenericInstallerInstallRoot)store" />
<RSDependencies Include="$(RSInstallerName)-2.0.0">
<Version>2.0.0</Version>
</RSDependencies>
<HostingDependencies Include="$(RSInstallerName)-$(PackageVersion)">
<Version>$(PackageVersion)</Version>
</HostingDependencies>
<HostingDependencies Include="dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)">
<Version>$(MicrosoftNETCoreApp20PackageVersion)</Version>
</HostingDependencies>
<TimestampFreeHostingDependencies Include="$(RSInstallerName)-$(PackageVersionNoTimestamp)">
<Version>$(PackageVersionNoTimestamp)</Version>
</TimestampFreeHostingDependencies>
<TimestampFreeHostingDependencies Include="dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)">
<Version>$(MicrosoftNETCoreApp20PackageVersion)</Version>
</TimestampFreeHostingDependencies>
</ItemGroup>
<PropertyGroup>
<HostingFPMArguments>@(HostingDependencies->' -d &quot;%(Identity) &gt;= %(Version)&quot;', ' ')</HostingFPMArguments>
<TimestampFreeHostingFPMArguments>@(TimestampFreeHostingDependencies->' -d &quot;%(Identity) &gt;= %(Version)&quot;', ' ')</TimestampFreeHostingFPMArguments>
<RSDependencyArguments>@(RSDependencies->' -d &quot;%(Identity) &gt;= %(Version)&quot;', ' ')</RSDependencyArguments>
<RHRSArguments>$(RSDependencyArguments) @(RHStoreDirectories->' --directories &quot;%(FullPath)&quot;', ' ')</RHRSArguments>
<GenericRSArguments>$(RSDependencyArguments) @(GenericStoreDirectories->' --directories &quot;%(FullPath)&quot;', ' ')</GenericRSArguments>
<CommonArguments>Image=$(Image);RPMVendor=$(RPMVendor)</CommonArguments>
<CommonGenericArguments>RPMFileSuffix=rhel.7-x64.rpm;RPMInstallRoot=$(GenericInstallerInstallRoot)</CommonGenericArguments>
<CommonRHArguments>RPMFileSuffix=rh.rhel.7-x64.rpm;RPMInstallRoot=$(RHInstallerInstallRoot)</CommonRHArguments>
<CommonRSArguments>MaintainerName=@(_RSMaintainerName);MaintainerEmail=@(_RSMaintainerEmail)</CommonRSArguments>
<CommonRSArguments>$(CommonRSArguments);RPMInstallerPrefix=$(RSInstallerName);RPMRevision=@(_RSPackageRevision)</CommonRSArguments>
<CommonRSArguments>$(CommonRSArguments);RPMSummary=@(_RSInstallerSummary);RPMDescription=@(_RSDescription)</CommonRSArguments>
<CommonRSArguments>$(CommonRSArguments);RPMLicense=@(_RSLicense);RPMHomepage=@(_RSHomepage)</CommonRSArguments>
<CommonHostingArguments>$(CommonArguments);MaintainerName=@(_HostingMaintainerName);MaintainerEmail=@(_HostingMaintainerEmail)</CommonHostingArguments>
<CommonHostingArguments>$(CommonHostingArguments);RPMInstallerPrefix=$(HostingInstallerName);RPMRevision=@(_HostingRevision)</CommonHostingArguments>
<CommonHostingArguments>$(CommonHostingArguments);RPMSummary=@(_HostingSummary);RPMDescription=@(_HostingDescription)</CommonHostingArguments>
<CommonHostingArguments>$(CommonHostingArguments);RPMLicense=@(_HostingLicense);RPMHomepage=@(_HostingHomepage)</CommonHostingArguments>
<TimestampRSArguments>$(CommonArguments);$(CommonGenericArguments);$(CommonRSArguments)</TimestampRSArguments>
<TimestampRSArguments>$(TimestampRSArguments);RSArchive=$(TimestampRSArchive);RPMVersion=$(PackageVersion);RPMArguments=$(GenericRSArguments)</TimestampRSArguments>
<TimestampFreeRSArguments>$(CommonArguments);$(CommonGenericArguments);$(CommonRSArguments)</TimestampFreeRSArguments>
<TimestampFreeRSArguments>$(TimestampFreeRSArguments);RSArchive=$(TimestampFreeLinuxRSArchive);RPMVersion=$(PackageVersionNoTimestamp);RPMArguments=$(GenericRSArguments)</TimestampFreeRSArguments>
<TimestampHostingArguments>$(CommonArguments);$(CommonGenericArguments);$(CommonHostingArguments)</TimestampHostingArguments>
<TimestampHostingArguments>$(TimestampHostingArguments);RPMVersion=$(PackageVersion);RPMArguments=$(HostingFPMArguments)</TimestampHostingArguments>
<TimestampFreeHostingArguments>$(CommonArguments);$(CommonGenericArguments);$(CommonHostingArguments)</TimestampFreeHostingArguments>
<TimestampFreeHostingArguments>$(TimestampFreeHostingArguments);RPMVersion=$(PackageVersionNoTimestamp);RPMArguments=$(TimestampFreeHostingFPMArguments)</TimestampFreeHostingArguments>
<RHTimestampRSArguments>$(CommonArguments);$(CommonRHArguments);$(CommonRSArguments)</RHTimestampRSArguments>
<RHTimestampRSArguments>$(RHTimestampRSArguments);RSArchive=$(TimestampRSArchive);RPMVersion=$(PackageVersion);RPMArguments=$(RHRSArguments)</RHTimestampRSArguments>
<RHTimestampFreeRSArguments>$(CommonArguments);$(CommonRHArguments);$(CommonRSArguments)</RHTimestampFreeRSArguments>
<RHTimestampFreeRSArguments>$(RHTimestampFreeRSArguments);RSArchive=$(TimestampFreeLinuxRSArchive);RPMVersion=$(PackageVersionNoTimestamp);RPMArguments=$(RHRSArguments)</RHTimestampFreeRSArguments>
<RHTimestampHostingArguments>$(CommonArguments);$(CommonRHArguments);$(CommonHostingArguments)</RHTimestampHostingArguments>
<RHTimestampHostingArguments>$(RHTimestampHostingArguments);RPMVersion=$(PackageVersion);RPMArguments=$(HostingFPMArguments)</RHTimestampHostingArguments>
<RHTimestampFreeHostingArguments>$(CommonArguments);$(CommonRHArguments);$(CommonHostingArguments)</RHTimestampFreeHostingArguments>
<RHTimestampFreeHostingArguments>$(RHTimestampFreeHostingArguments);RPMVersion=$(PackageVersionNoTimestamp);RPMArguments=$(TimestampFreeHostingFPMArguments)</RHTimestampFreeHostingArguments>
</PropertyGroup>
<!-- General Timestamp runtime store -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(TimestampRSArguments)" />
<!-- General Timestamp free runtime store -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(TimestampFreeRSArguments)" />
<!-- General Timestamp hosting bundle -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(TimestampHostingArguments)" />
<!-- General Timestamp free hosting bundle -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(TimestampFreeHostingArguments)" />
<!-- RH Timestamp runtime store -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RHTimestampRSArguments)" />
<!-- RH Timestamp free runtime store -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RHTimestampFreeRSArguments)" />
<!-- RH Timestamp hosting bundle -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RHTimestampHostingArguments)" />
<!-- RH Timestamp free hosting bundle -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RHTimestampFreeHostingArguments)" />
<!-- Remove Docker Image to save disk space -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_RemoveDockerImage" Properties="Image=$(Image)" />
</Target>
<Target Name="_GenerateDeb">
<!-- Create layout: Clear work directory -->
<RemoveDir Directories="$(_WorkRoot)" />
<MakeDir Directories="$(_WorkRoot)" />
<!-- Create layout: Extract archive if given -->
<MakeDir Directories="$(_WorkLayoutDir)package_root\" />
<Exec Command="tar -xzf $(RSArchive) -C $(_WorkLayoutDir)package_root/" Condition="'$(RSArchive)'!=''" />
<!-- Create layout: Generate and Place debian_config.json -->
<Copy
SourceFiles="$(DebConfig)"
DestinationFiles="$(_WorkLayoutDir)debian_config.json"
OverwriteReadOnlyFiles="True"
SkipUnchangedFiles="False"
UseHardlinksIfPossible="False" />
<ItemGroup>
<DebConfigItems Include="DOTNET_VERSION" Replacement="$(DotnetVersion)" />
<DebConfigItems Include="DEB_VERSION" Replacement="$(DebVersion)" />
</ItemGroup>
<!-- Update versions -->
<RepoTasks.ReplaceInFile Filename="$(_WorkLayoutDir)debian_config.json" Items="@(DebConfigItems)" />
<!-- Build Runtime Store and Hosting Bundle Deb package -->
<!--
Note: KOREBUILD_DOTNET_FEED_CREDENTIAL is intentionally NOT an MSBuild variable.
MSBuild doesn't to the substitution correctly because the string contains %,
so we'll let bash do it instead.
-->
<Exec Command="docker run
--rm
-v $(RepositoryRoot):$(_DockerRootDirectory)
-e DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
-e INSTALLER_NAME=$(DebPrefix)-$(DebVersion)
-e INSTALLER_VERSION=$(DebVersion)
-e 'KOREBUILD_DOTNET_VERSION=$(KOREBUILD_DOTNET_VERSION)'
-e 'KOREBUILD_DOTNET_SHARED_RUNTIME_VERSION=$(KOREBUILD_DOTNET_SHARED_RUNTIME_VERSION)'
-e 'KOREBUILD_DOTNET_FEED_CDN=$(KOREBUILD_DOTNET_FEED_CDN)'
-e 'KOREBUILD_DOTNET_FEED_UNCACHED=$(KOREBUILD_DOTNET_FEED_UNCACHED)'
-e &quot;KOREBUILD_DOTNET_FEED_CREDENTIAL=$KOREBUILD_DOTNET_FEED_CREDENTIAL&quot;
docker-image-$(Image)
./build.sh /t:RunDebTool"
ContinueOnError="WarnAndContinue" />
<!-- Copy Runtime Store and Hosting Bundle packages to output -->
<ItemGroup>
<GeneratedDebFiles Include="$(_WorkOutputDir)/*.deb" />
</ItemGroup>
<Error Text="@(GeneratedDebFiles->Count()) deb installer files generated." Condition="'@(GeneratedDebFiles->Count())' != 1" />
<Copy
DestinationFiles="$(_InstallersOutputDir)$(DebPrefix)-$(DebVersion)-$(Image)-x64.deb"
SourceFiles="@(GeneratedDebFiles)"
OverwriteReadOnlyFiles="True"
SkipUnchangedFiles="False"
UseHardlinksIfPossible="False" />
</Target>
<Target Name="_GenerateDebOnPlatform">
<PropertyGroup>
<CommonRSArguments>Image=$(Image);DebConfig=$(RSDebConfigFile);DebPrefix=$(RSInstallerName)</CommonRSArguments>
<CommonHostingArguments>Image=$(Image);DebConfig=$(HostingDebConfigFile);DotnetVersion=$(MicrosoftNETCoreApp20PackageVersion);DebPrefix=$(HostingInstallerName)</CommonHostingArguments>
</PropertyGroup>
<!-- Build Docker Image -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildDockerImage" Properties="Image=$(Image)" />
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_GenerateDeb"
Properties="$(CommonRSArguments);RSArchive=$(TimestampRSArchive);DebVersion=$(Version)" />
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_GenerateDeb"
Properties="$(CommonRSArguments);RSArchive=$(TimestampFreeLinuxRSArchive);DebVersion=$(PackageVersionNoTimestamp)" />
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_GenerateDeb"
Properties="$(CommonHostingArguments);DebVersion=$(Version)" />
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="_GenerateDeb"
Properties="$(CommonHostingArguments);DebVersion=$(PackageVersionNoTimestamp)" />
<!-- Remove Docker Image to save disk space -->
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_RemoveDockerImage" Properties="Image=$(Image)" />
</Target>
<Target Name="GenerateDebs" DependsOnTargets="_EnsureInstallerPrerequisites">
<PropertyGroup>
<CommonArguments>Version=$(Version);TimestampFreeVersion=$(PackageVersionNoTimestamp)</CommonArguments>
</PropertyGroup>
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDebOnPlatform" Properties="$(CommonArguments);Image=debian.8" />
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDebOnPlatform" Properties="$(CommonArguments);Image=ubuntu.14.04" />
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDebOnPlatform" Properties="$(CommonArguments);Image=ubuntu.16.04" />
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDebOnPlatform" Properties="$(CommonArguments);Image=ubuntu.16.10" />
</Target>
<Target Name="RunDebTool">
<!-- Install dotnet-deb tool -->
<MSBuild Projects="$(_DebToolDir)dotnet-deb-tool-consumer.csproj" Targets="Restore" />
<!-- Build deb package -->
<Exec
Command="dotnet deb-tool -i $(_WorkLayoutDir) -o $(_WorkOutputDir) -n $(INSTALLER_NAME) -v $(INSTALLER_VERSION)"
WorkingDirectory="$(_DebToolDir)" />
</Target>
<Target Name="GenerateRelabledInstallers">
<ItemGroup>
<Debian8Installers Include="$(_InstallersOutputDir)*debian.8*" />
<Ubuntu1604Installers Include="$(_InstallersOutputDir)*ubuntu.16.04*" />
</ItemGroup>
<!-- Create debian.9 installers by renaming debian.8 installers -->
<Copy
SourceFiles="%(Debian8Installers.FullPath)"
DestinationFiles="$([System.String]::Copy('%(Debian8Installers.FullPath)').Replace('debian.8','debian.9'))"
OverwriteReadOnlyFiles="True"
SkipUnchangedFiles="False"
UseHardlinksIfPossible="False" />
<!-- Create ubuntu.17.04 installers by renaming ubuntu.16.04 installers -->
<Copy
SourceFiles="%(Ubuntu1604Installers.FullPath)"
DestinationFiles="$([System.String]::Copy('%(Ubuntu1604Installers.FullPath)').Replace('ubuntu.16.04','ubuntu.17.04'))"
OverwriteReadOnlyFiles="True"
SkipUnchangedFiles="False"
UseHardlinksIfPossible="False" />
</Target>
</Project>

68
build/Templating.targets Normal file
Просмотреть файл

@ -0,0 +1,68 @@
<Project>
<PropertyGroup>
<TemplatingProjectRoot>$(MSBuildThisFileDirectory)..\modules\Templating\</TemplatingProjectRoot>
</PropertyGroup>
<Target Name="BuildTemplates" DependsOnTargets="GeneratePropsFiles">
<PropertyGroup>
<GeneratedNoTimestampPackageVersionPropsPath>$(IntermediateDir)dependencies.notimestamp.props</GeneratedNoTimestampPackageVersionPropsPath>
<TemplateProjCommmonProperties>
RepositoryRoot=$(TemplatingProjectRoot);
DotNetRestoreSourcesPropsPath=$(GeneratedRestoreSourcesPropsPath);
BuildNumber=$(BuildNumber);
Configuration=$(Configuration);
</TemplateProjCommmonProperties>
<TemplateProjProperties>
$(TemplateProjCommmonProperties);
DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath);
VersionMetadata=timestamped;
</TemplateProjProperties>
<TemplateProjNoTimestampProperties>
$(TemplateProjCommmonProperties);
DotNetPackageVersionPropsPath=$(GeneratedNoTimestampPackageVersionPropsPath);
IsFinalBuild=true;
</TemplateProjNoTimestampProperties>
</PropertyGroup>
<!-- Produce regular, timestamped templates for pre-release builds -->
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="Restore;Compile;Package"
Properties="$(TemplateProjProperties)" />
<ItemGroup>
<TemplateArtifacts Include="$(TemplatingProjectRoot)artifacts\build\*" />
</ItemGroup>
<Copy SourceFiles="@(TemplateArtifacts)" DestinationFolder="$(BuildDir)" />
<!-- Gather artifact info as if this were a final build -->
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="GetArtifactInfo"
Properties="RepositoryRoot=%(Repository.RootPath);Configuration=$(Configuration);BuildNumber=$(BuildNumber);IsFinalBuild=true"
ContinueOnError="WarnAndContinue">
<Output TaskParameter="TargetOutputs" ItemName="FinalBuildArtifactInfo" />
</MSBuild>
<ItemGroup>
<_NoTimestampPackages Include="@(ExternalDependency)" />
<_NoTimestampPackages Include="%(FinalBuildArtifactInfo.PackageId)" Version="%(FinalBuildArtifactInfo.Version)" Condition=" '%(FinalBuildArtifactInfo.ArtifactType)' == 'NuGetPackage' " />
<_NoTimestampPackages Include="Microsoft.AspNetCore.All" Version="$(PackageVersionNoTimestamp)" />
</ItemGroup>
<RepoTasks.GeneratePackageVersionPropsFile
Packages="@(_NoTimestampPackages)"
OutputPath="$(GeneratedNoTimestampPackageVersionPropsPath)" />
<!-- Rebuild the templates without restoring. (The non-timestamped packages don't exist yet.) -->
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="Prepare;Compile;Package"
Properties="$(TemplateProjNoTimestampProperties);NoRestore=true" />
<ItemGroup>
<TemplateNoTimestampArtifacts Include="$(TemplatingProjectRoot)artifacts\build\*" />
</ItemGroup>
<Copy SourceFiles="@(TemplateNoTimestampArtifacts)" DestinationFolder="$(ArtifactsDir)notimestamp\" />
</Target>
</Project>

Просмотреть файл

@ -3,247 +3,255 @@
<ItemDefinitionGroup>
<PackageArtifact>
<Metapackage>false</Metapackage>
<HostingStartup>false</HostingStartup>
<RuntimeStore>false</RuntimeStore>
<LZMA>false</LZMA>
<LZMATools>false</LZMATools>
</PackageArtifact>
</ItemDefinitionGroup>
<ItemGroup>
<PackageArtifact Include="Microsoft.AspNet.Identity.AspNetCoreCompat" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore" Category="ship" />
<!-- Temporariliy comment out while we restructure how we build the runtime store-->
<!-- PackageArtifact Include="Microsoft.AspNetCore.All" Category="ship" /> -->
<PackageArtifact Include="Microsoft.AspNetCore.Antiforgery" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.ApplicationInsights.HostingStartup" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Cookies" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Facebook" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Google" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.JwtBearer" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OAuth" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Twitter" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authorization" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authorization.Policy" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNet.Identity.AspNetCoreCompat" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.All" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Antiforgery" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.ApplicationInsights.HostingStartup" Category="ship" Metapackage="true" RuntimeStore="true" HostingStartup="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Authentication" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Cookies" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Core" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Facebook" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Google" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.JwtBearer" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OAuth" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Twitter" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authorization" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Authorization.Policy" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Category="ship" Metapackage="true" RuntimeStore="true" HostingStartup="true" />
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServices.SiteExtension" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Buffering" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.BenchmarkRunner.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Certificates.Configuration.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Certificates.Generation.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.ChunkingCookieManager.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.CookiePolicy" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Cors" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.Internal" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureStorage" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Extensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.CookiePolicy" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Cors" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.Internal" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureStorage" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Extensions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Redis" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.SystemWeb" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.DeveloperCertificates.Tools" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.DeveloperCertificates.Tools" Category="ship" LZMATools="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Elm" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Identity.Service" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Dispatcher" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Dispatcher.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Identity.Service" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Dispatcher" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Dispatcher.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.WebHostBuilderFactory.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.WindowsServices" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Html.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http.Extensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http.Features" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.HttpOverrides" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.HttpsPolicy" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Html.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Http" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Http.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Http.Extensions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Http.Features" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.HttpOverrides" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.HttpsPolicy" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.HttpSys.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.AzureKeyVault" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.EntityFrameworkCore" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.IntegratedWebClient" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Mvc" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Specification.Tests" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Specification.Tests" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.JsonPatch" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Localization" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Localization.Routing" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.MiddlewareAnalysis" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ApiExplorer" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Cors" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.DataAnnotations" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Localization" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.AzureKeyVault" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Core" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.EntityFrameworkCore" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.IntegratedWebClient" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Mvc" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.JsonPatch" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Localization" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Localization.Routing" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.MiddlewareAnalysis" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ApiExplorer" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Core" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Cors" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.DataAnnotations" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Localization" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X" Category="shipoob" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.RazorPages" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.TagHelpers" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.RazorPages" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.TagHelpers" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Testing" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ViewFeatures" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ViewFeatures" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.WebApiCompatShim" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.NodeServices" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.NodeServices" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.NodeServices.Sockets" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Owin" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Protocols.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Owin" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Protocols.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Proxy" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.RangeHelper.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Razor" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Language" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Runtime" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Razor" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Language" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Runtime" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Razor.TagHelpers.Testing.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCompression" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Rewrite" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Routing" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Routing.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCompression" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Rewrite" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Routing" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Routing.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Routing.DecisionTree.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.HttpSys" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.IISIntegration" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.HttpSys" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.IISIntegration" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.IntegrationTesting" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Https" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Session" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Core" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Https" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.AspNetCore.Session" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.SignalR" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Client" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Client.Core" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Common" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Core" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Redis" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Sockets" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Sockets" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Sockets.Abstractions" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Sockets.Client.Http" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Sockets.Common.Http" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.Sockets.Http" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.SpaServices" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.StaticFiles" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.SpaServices" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.SpaTemplates" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.StaticFiles" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.TestHost" Category="ship" />
<PackageArtifact Include="Microsoft.AspNetCore.Testing" Category="noship" />
<PackageArtifact Include="Microsoft.AspNetCore.WebSockets" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.WebUtilities" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.CodeAnalysis.Razor" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.AspNetCore.WebSockets" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.AspNetCore.WebUtilities" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.CodeAnalysis.Razor" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.CodeAnalysis.Razor.Workspaces" Category="shipoob" />
<PackageArtifact Include="Microsoft.CodeAnalysis.Remote.Razor" Category="shipoob" />
<PackageArtifact Include="Microsoft.Data.Sqlite" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Data.Sqlite.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.DotNet.Watcher.Tools" Category="ship" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Design" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.InMemory" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Relational" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Data.Sqlite" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Data.Sqlite.Core" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.DotNet.Watcher.Tools" Category="ship" LZMATools="true" />
<PackageArtifact Include="Microsoft.DotNet.Web.Client.ItemTemplates" Category="shipoob" />
<PackageArtifact Include="Microsoft.DotNet.Web.ItemTemplates" Category="shipoob" />
<PackageArtifact Include="Microsoft.DotNet.Web.ProjectTemplates.2.0" Category="shipoob" />
<PackageArtifact Include="Microsoft.DotNet.Web.Spa.ProjectTemplates" Category="shipoob" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Design" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.InMemory" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Relational" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Relational.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.SqlServer" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Tools" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Category="ship" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.SqlServer" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Tools" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Category="ship" LZMATools="true" />
<PackageArtifact Include="Microsoft.Extensions.ActivatorUtilities.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Memory" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Redis" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.SqlConfig.Tools" Category="ship" />
<PackageArtifact Include="Microsoft.Extensions.Caching.SqlServer" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Memory" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.Redis" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.SqlConfig.Tools" Category="ship" LZMATools="true" />
<PackageArtifact Include="Microsoft.Extensions.Caching.SqlServer" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.CommandLineUtils.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Configuration" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.AzureKeyVault" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Binder" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.CommandLine" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.AzureKeyVault" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Binder" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.CommandLine" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.DockerSecrets" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.FileExtensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Ini" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Json" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.UserSecrets" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Xml" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.FileExtensions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Ini" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Json" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.UserSecrets" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Configuration.Xml" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.CopyOnWriteDictionary.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection.Specification.Tests" Category="ship" />
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.DiagnosticAdapter" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Composite" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Embedded" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Physical" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.FileSystemGlobbing" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.DiagnosticAdapter" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Composite" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Embedded" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Physical" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.FileSystemGlobbing" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.HashCodeCombiner.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Hosting.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Hosting" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Http" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Identity.Core" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Identity.Stores" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Localization" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Localization.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Abstractions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Hosting.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Hosting" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Http" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Identity.Core" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Identity.Stores" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Localization" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Localization.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Abstractions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Analyzers" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Logging.AzureAppServices" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Configuration" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Console" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Debug" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.AzureAppServices" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Configuration" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Console" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Debug" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.EventLog" Category="ship" />
<PackageArtifact Include="Microsoft.Extensions.Logging.EventSource" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.EventSource" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.Testing" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Logging.TraceSource" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Logging.TraceSource" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.ObjectPool" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Options" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Options.ConfigurationExtensions" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.ObjectPool" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Options" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Options.ConfigurationExtensions" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.ParameterDefaultValue.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.Primitives" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.Primitives" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.Process.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.PropertyActivator.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.PropertyHelper.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.RazorViews.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.SecretManager.Tools" Category="ship" />
<PackageArtifact Include="Microsoft.Extensions.SecretManager.Tools" Category="ship" LZMATools="true" />
<PackageArtifact Include="Microsoft.Extensions.SecurityHelper.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.StackTrace.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.TypeNameHelper.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.ValueStopwatch.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Extensions.WebEncoders" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Extensions.WebEncoders" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Extensions.WebEncoders.Sources" Category="noship" />
<PackageArtifact Include="Microsoft.Net.Http.Headers" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.Net.Http.Headers" Category="ship" Metapackage="true" RuntimeStore="true" />
<PackageArtifact Include="Microsoft.Owin.Security.Interop" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Editor.Razor" Category="shipoob" />
<PackageArtifact Include="Microsoft.VisualStudio.LanguageServices.Razor" Category="shipoob" />
<PackageArtifact Include="Microsoft.VisualStudio.Mac.LanguageServices.Razor" Category="shipoob" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.BrowserLink" Category="ship" Metapackage="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Contracts" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Core" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Templating" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Utils" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGenerators.Mvc" Category="ship" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.BrowserLink" Category="ship" Metapackage="true" RuntimeStore="true"/>
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Contracts" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Core" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Templating" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Category="ship" LZMATools="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration.Utils" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGenerators.Mvc" Category="ship" LZMA="true" />
<PackageArtifact Include="Microsoft.Web.Xdt.Extensions" Category="shipoob" />
<PackageArtifact Include="RazorPageGenerator" Category="noship" />
</ItemGroup>

19
build/common.props Normal file
Просмотреть файл

@ -0,0 +1,19 @@
<Project>
<Import Project="dependencies.props" />
<PropertyGroup>
<Product>Microsoft ASP.NET Core</Product>
<RepositoryUrl>https://github.com/aspnet/Universe</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<GenerateUserSecretsAttribute>false</GenerateUserSecretsAttribute>
<AssemblyOriginatorKeyFile>..\..\build\Key.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkPackageVersion)" PrivateAssets="All" />
</ItemGroup>
</Project>

Просмотреть файл

@ -1,4 +1,4 @@
<Project>
<Project>
<ItemDefinitionGroup>
<ExternalDependency>
@ -12,12 +12,22 @@
<Private>false</Private>
<!-- When true, this dependency should be mirrored to aspnetcore's nightly build feeds. -->
<Mirror>false</Mirror>
<!-- When true, this dependency will be included in the metapackage. -->
<Metapackage>false</Metapackage>
<!-- When true, this dependency will be included in the runtime store. -->
<RuntimeStore>false</RuntimeStore>
<!-- When true, this dependency will be used to generate a deps.json for hosting startup that will be included in the runtime store. -->
<HostingStartup>false</HostingStartup>
<!-- When true, this dependency will be included in the LZMA. -->
<LZMA>false</LZMA>
<!-- When true, this tool dependency will be included in the metapackage. -->
<LZMATools>false</LZMATools>
</ExternalDependency>
</ItemDefinitionGroup>
<!-- dotnet-core -->
<!-- .NET Core feed -->
<PropertyGroup>
<DotNetCoreFeed>https://dotnet.myget.org/f/dotnet-core/api/v3/index.json</DotNetCoreFeed>
<DotNetCoreFeed>https://dotnet.myget.org/F/dotnet-core/api/v3/index.json</DotNetCoreFeed>
</PropertyGroup>
<ItemGroup>
@ -51,7 +61,7 @@
<RoslynDevPackageVersion>2.6.0-beta1-62023-02</RoslynDevPackageVersion>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<!-- These versions of roslyn must be used when building a VSIX. -->
<ExternalDependency Include="Microsoft.CodeAnalysis" Version="$(RoslynDevPackageVersion)" Source="$(RoslynFeed)" Private="true" Mirror="true">
<VariableName>VSIX_MicrosoftCodeAnalysisPackageVersion</VariableName>
@ -117,53 +127,56 @@
<!-- nuget.org -->
<PropertyGroup>
<DefaultNuGetFeed>https://api.nuget.org/v3/index.json</DefaultNuGetFeed>
<MicrosoftNETCoreApp20PackageVersion>2.0.0</MicrosoftNETCoreApp20PackageVersion>
</PropertyGroup>
<ItemGroup>
<ExternalDependency Include="BenchmarkDotNet" Version="0.10.9" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="BenchmarkDotNet" Version="0.10.9" Source="$(DefaultNuGetFeed)" Private="true"/>
<ExternalDependency Include="EntityFramework" Version="6.1.3" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="FSharp.Core" Version="4.2.1" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="FSharp.NET.Sdk" Version="1.0.5" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="Google.Protobuf" Version="3.1.0" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="Libuv" Version="1.10.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.1.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.AspNet.Identity.EntityFramework" Version="2.2.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.AspNet.WebApi.Client" Version="5.2.2" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Azure.KeyVault" Version="2.3.2" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Azure.Management.Fluent" Version="1.1.3" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Azure.Services.AppAuthentication" Version="1.0.0-preview" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Build.Framework" Version="15.3.409" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Build.Runtime" Version="15.3.409" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Build.Tasks.Core" Version="15.3.409" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Build.Utilities.Core" Version="15.3.409" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Build" Version="15.3.409" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis.Common" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis.EditorFeatures" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis.Features" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis.VisualBasic" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CodeAnalysis" Version="2.3.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.CSharp" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Extensions.DependencyModel" Version="2.0.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Libuv" Version="1.10.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.1.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.AspNet.Identity.EntityFramework" Version="2.2.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.AspNet.WebApi.Client" Version="5.2.2" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Azure.KeyVault" Version="2.3.2" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Azure.Management.Fluent" Version="1.1.3" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Azure.Services.AppAuthentication" Version="1.0.0-preview" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Build.Framework" Version="15.3.409" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Build.Runtime" Version="15.3.409" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Build.Tasks.Core" Version="15.3.409" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Build.Utilities.Core" Version="15.3.409" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Build" Version="15.3.409" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis.Common" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis.EditorFeatures" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis.Features" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis.VisualBasic" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CodeAnalysis" Version="2.3.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.CSharp" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Extensions.DependencyModel" Version="2.0.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Extensions.PlatformAbstractions" Version="1.1.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="3.14.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="5.2.0-preview1-408290725" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.NET.Test.Sdk" Version="15.3.0" Source="$(DefaultNuGetFeed)" Private="true"/>
<ExternalDependency Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="3.14.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="5.2.0-preview1-408290725" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.NET.Test.Sdk" Version="15.3.0" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="Microsoft.NETCore.App" Version="1.0.5" TargetFramework="netcoreapp1.0" Source="$(DefaultNuGetFeed)">
<VariableName>MicrosoftNETCoreApp10PackageVersion</VariableName>
</ExternalDependency>
<ExternalDependency Include="Microsoft.NETCore.App" Version="1.1.2" TargetFramework="netcoreapp1.1" Source="$(DefaultNuGetFeed)">
<VariableName>MicrosoftNETCoreApp11PackageVersion</VariableName>
</ExternalDependency>
<ExternalDependency Include="Microsoft.NETCore.App" Version="2.0.0" TargetFramework="netcoreapp2.0" Source="$(DefaultNuGetFeed)">
<ExternalDependency Include="Microsoft.NETCore.App" Version="$(MicrosoftNETCoreApp20PackageVersion)" TargetFramework="netcoreapp2.0" Source="$(DefaultNuGetFeed)">
<VariableName>MicrosoftNETCoreApp20PackageVersion</VariableName>
</ExternalDependency>
<ExternalDependency Include="Microsoft.NETCore.Windows.ApiSets" Version="1.0.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Owin.Security.Cookies" Version="3.0.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Owin.Security" Version="3.0.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.DotNet.ProjectModel" Version="1.0.0-rc3-003121" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="Microsoft.NETCore.Windows.ApiSets" Version="1.0.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Owin.Security.Cookies" Version="3.0.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Owin.Security" Version="3.0.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Owin.Testing" Version="3.0.1" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="Microsoft.Owin" Version="3.0.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.VisualStudio.ComponentModelHost" Version="15.0.26606" Source="$(DefaultNuGetFeed)" Private="true" />
@ -180,80 +193,80 @@
<ExternalDependency Include="Microsoft.VisualStudio.Shell.Interop" Version="7.10.6071" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="Microsoft.VisualStudio.Text.Data" Version="15.0.26606" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="Microsoft.VisualStudio.Text.UI" Version="15.0.26606" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="Microsoft.Web.Administration" Version="7.0.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Web.Xdt" Version="1.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Win32.Registry" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Microsoft.Web.Administration" Version="7.0.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Web.Xdt" Version="1.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Microsoft.Win32.Registry" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Mono.Addins" Version="1.3.7" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="Moq" Version="4.7.49" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="MsgPack.Cli" Version="0.9.0-beta2" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="NETStandard.Library" Version="2.0.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Newtonsoft.Json.Bson" Version="1.0.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Newtonsoft.Json" Version="10.0.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="MsgPack.Cli" Version="0.9.0-beta2" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="NETStandard.Library" Version="2.0.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Newtonsoft.Json.Bson" Version="1.0.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Newtonsoft.Json" Version="10.0.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Newtonsoft.Json" Version="9.0.1" Source="$(DefaultNuGetFeed)">
<!-- This version is required by MSBuild tasks or Visual Studio extensions. -->
<VariableName>VisualStudio_NewtonsoftJsonPackageVersion</VariableName>
</ExternalDependency>
<ExternalDependency Include="NuGet.Frameworks" Version="4.3.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Remotion.Linq" Version="2.2.0-alpha-002" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Serilog.Extensions.Logging" Version="1.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="Serilog.Sinks.File" Version="3.2.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="SQLitePCLRaw.bundle_green" Version="1.1.8" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="NuGet.Frameworks" Version="4.3.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Remotion.Linq" Version="2.2.0-alpha-002" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Serilog.Extensions.Logging" Version="1.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="Serilog.Sinks.File" Version="3.2.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="SQLitePCLRaw.bundle_green" Version="1.1.8" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="SQLitePCLRaw.bundle_sqlcipher" Version="1.1.8" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="SQLitePCLRaw.core" Version="1.1.8" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="StackExchange.Redis.StrongName" Version="1.2.4" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="StreamJsonRpc" Version="1.1.92" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Buffers" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.CodeDom" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Collections.Immutable" Version="1.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.ComponentModel.Annotations" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Composition.AttributedModel" Version="1.1.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Composition.Convention" Version="1.1.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Composition.Hosting" Version="1.1.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Composition.Runtime" Version="1.1.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Composition.TypedParts" Version="1.1.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Composition" Version="1.1.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Configuration.ConfigurationManager" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Data.SqlClient" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Diagnostics.DiagnosticSource" Version="4.4.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Interactive.Async" Version="3.1.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.IO.FileSystem.AccessControl" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.IO.Packaging" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.IO.Pipes.AccessControl" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.IO.Ports" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Json" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Management.Automation" Version="6.1.7601.17515" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Net.Http.WinHttpHandler" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Net.Http" Version="4.3.2" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Numerics.Vectors" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Reactive.Linq" Version="3.1.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Reflection.DispatchProxy" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Reflection.Emit" Version="4.3.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Reflection.Metadata" Version="1.5.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Reflection.TypeExtensions" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Runtime.CompilerServices.Unsafe" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Security.AccessControl" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Security.Cryptography.Cng" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Security.Cryptography.Pkcs" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Security.Cryptography.ProtectedData" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Security.Cryptography.Xml" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Security.Permissions" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Security.Principal.Windows" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.ServiceProcess.ServiceController" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Text.Encoding.CodePages" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Text.Encodings.Web" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Threading.AccessControl" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Threading.Tasks.Dataflow" Version="4.8.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.Threading.Tasks.Extensions" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="System.ValueTuple" Version="4.4.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="WindowsAzure.Storage" Version="8.1.4" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="xunit.abstractions" Version="2.0.1" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="xunit.analyzers" Version="0.7.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="xunit.assert" Version="2.3.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="xunit.core" Version="2.3.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="xunit.extensibility.core" Version="2.3.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="SQLitePCLRaw.core" Version="1.1.8" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="StackExchange.Redis.StrongName" Version="1.2.4" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="StreamJsonRpc" Version="1.1.92" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Buffers" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.CodeDom" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Collections.Immutable" Version="1.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.ComponentModel.Annotations" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Composition.AttributedModel" Version="1.1.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Composition.Convention" Version="1.1.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Composition.Hosting" Version="1.1.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Composition.Runtime" Version="1.1.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Composition.TypedParts" Version="1.1.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Composition" Version="1.1.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Configuration.ConfigurationManager" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Data.SqlClient" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Diagnostics.DiagnosticSource" Version="4.4.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Interactive.Async" Version="3.1.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.IO.FileSystem.AccessControl" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.IO.Packaging" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.IO.Pipes.AccessControl" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.IO.Ports" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Json" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Management.Automation" Version="6.1.7601.17515" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Net.Http.WinHttpHandler" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Net.Http" Version="4.3.2" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Numerics.Vectors" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Reactive.Linq" Version="3.1.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Reflection.DispatchProxy" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Reflection.Emit" Version="4.3.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Reflection.Metadata" Version="1.5.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Reflection.TypeExtensions" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Runtime.CompilerServices.Unsafe" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Security.AccessControl" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Security.Cryptography.Cng" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Security.Cryptography.Pkcs" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Security.Cryptography.ProtectedData" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Security.Cryptography.Xml" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Security.Permissions" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Security.Principal.Windows" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.ServiceProcess.ServiceController" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Text.Encoding.CodePages" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Text.Encodings.Web" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Threading.AccessControl" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Threading.Tasks.Dataflow" Version="4.8.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.Threading.Tasks.Extensions" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="System.ValueTuple" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="WindowsAzure.Storage" Version="8.1.4" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="xunit.abstractions" Version="2.0.1" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="xunit.analyzers" Version="0.7.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="xunit.assert" Version="2.3.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="xunit.core" Version="2.3.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="xunit.extensibility.core" Version="2.3.0" Source="$(DefaultNuGetFeed)" />
<ExternalDependency Include="xunit.runner.visualstudio" Version="2.3.0" Source="$(DefaultNuGetFeed)" Private="true" />
<ExternalDependency Include="xunit" Version="2.3.0" Source="$(DefaultNuGetFeed)"/>
<ExternalDependency Include="xunit" Version="2.3.0" Source="$(DefaultNuGetFeed)" />
</ItemGroup>
</Project>

Просмотреть файл

@ -1,42 +1,33 @@
<Project>
<Target Name="Push" DependsOnTargets="_PushNuGet;_PushNpm" />
<Target Name="_PushNuGet">
<ItemGroup>
<PackagesToPush Include="$(BuildDir)*.nupkg" />
<PackagesToPush Include="$(ArtifactsDir)mirror\*.nupkg" />
<PackagesToPush Include="$(LineupBuildDir)*.nupkg" />
</ItemGroup>
<Target Name="_PushNuGet" Condition="@(PackagesToPush->Count()) != 0">
<Error Text="Missing required property: NuGetPublishFeed" Condition=" '$(NuGetPublishFeed)' == '' "/>
<ItemGroup>
<_PackagesToPush Include="$(BuildDir)*.nupkg" />
<_PackagesToPush Include="$(ArtifactsDir)mirror\*.nupkg" />
<_LineupPackagesToPush Include="$(LineupBuildDir)*.nupkg" />
</ItemGroup>
<PushNuGetPackages
Packages="@(_PackagesToPush)"
Packages="@(PackagesToPush)"
Feed="$(NuGetPublishFeed)"
Condition="@(_PackagesToPush->Count()) != 0"
ApiKey="$(APIKey)" />
<PushNuGetPackages
Packages="@(_LineupPackagesToPush)"
Feed="$(NuGetPublishFeed)"
Condition="@(_LineupPackagesToPush->Count()) != 0"
ApiKey="$(APIKey)" />
</Target>
<Target Name="_PushNpm">
<ItemGroup>
<NpmModuleArtifact Include="$(BuildDir)*.tgz" />
</ItemGroup>
<Target Name="_PushNpm" Condition="@(NpmModuleArtifact->Count()) != 0">
<Error Text="Missing required property: NpmRegistry" Condition=" '$(NpmRegistry)' == '' "/>
<PropertyGroup>
<AuthTokenSetting>$(NpmRegistry.Replace("https:", "")):_authToken</AuthTokenSetting>
</PropertyGroup>
<ItemGroup>
<NpmModuleArtifact Include="$(BuildDir)*.tgz" />
</ItemGroup>
<Exec Command="npm config set &quot;$(AuthTokenSetting)&quot; $(APIKey)" Condition=" '$(APIKey)' != '' " />
<Exec Command="npm publish --registry $(NpmRegistry) &quot;%(NpmModuleArtifact.Identity)&quot;"
Condition="@(NpmModuleArtifact->Count()) != 0"
ContinueOnError="true">
<Output TaskParameter="ExitCode" ItemName="ExitCodes" />
</Exec>

Просмотреть файл

@ -1,11 +1,9 @@
<Project>
<Import Project="artifacts.props" />
<Import Project="dependencies.props" />
<Import Project="submodules.props" />
<PropertyGroup>
<!-- This repo does not have solutions to build -->
<DisableDefaultTargets>true</DisableDefaultTargets>
</PropertyGroup>
<Import Project="artifacts.props" />
<Import Project="submodules.props" />
</Project>

Просмотреть файл

@ -1,29 +1,31 @@
<Project>
<Import Project="RepositoryBuild.targets" />
<Import Project="RuntimeStore.targets" />
<Import Project="RuntimeStoreInstaller.targets" />
<Import Project="PackageArchive.targets" />
<Import Project="Templating.targets" />
<Import Project="push.targets" />
<PropertyGroup>
<SubmoduleRoot>$(RepositoryRoot)modules\</SubmoduleRoot>
<LineupBuildDir>$(ArtifactsDir)lineups\</LineupBuildDir>
<_DependencyBuildDirectory>$(RepositoryRoot).deps\build\</_DependencyBuildDirectory>
<_DependencyLineupDir>$(RepositoryRoot).deps\lineups\</_DependencyLineupDir>
<_DependencyPackagesDirectory>$(_DependencyBuildDirectory)</_DependencyPackagesDirectory>
<_RestoreGraphSpecsDirectory>$(IntermediateDir)package-specs\</_RestoreGraphSpecsDirectory>
<_RepositoryBuildTargets Condition="'$(_RepositoryBuildTargets)'=='' AND '$(CompileOnly)'=='true'">/t:Package /t:VerifyPackages</_RepositoryBuildTargets>
<_RepositoryBuildTargets Condition="'$(_RepositoryBuildTargets)'==''">/t:Build</_RepositoryBuildTargets>
<!-- For external packages that come from feeds will mirrored to aspnetcore feeds. -->
<IntermediateMirrorPackageDir>$(IntermediateDir)mirror\</IntermediateMirrorPackageDir>
<!-- For external packages that come from feeds we don't mirror. -->
<IntermediateExternalPackageDir>$(IntermediateDir)ext\</IntermediateExternalPackageDir>
<GeneratedPackageVersionPropsPath>$(IntermediateDir)dependencies.props</GeneratedPackageVersionPropsPath>
<GeneratedRestoreSourcesPropsPath>$(IntermediateDir)sources.props</GeneratedRestoreSourcesPropsPath>
<PrepareDependsOn>$(PrepareDependsOn);VerifyPackageArtifactConfig;CleanArtifacts;PrepareOutputPaths</PrepareDependsOn>
<PrepareDependsOn>$(PrepareDependsOn);VerifyPackageArtifactConfig;PrepareOutputPaths</PrepareDependsOn>
<CleanDependsOn>$(CleanDependsOn);CleanArtifacts;CleanUniverseArtifacts</CleanDependsOn>
<RestoreDependsOn>$(RestoreDependsOn);RestoreExternalDependencies</RestoreDependsOn>
<CleanDependsOn>$(CleanDependsOn);CleanArtifacts</CleanDependsOn>
<CompileDependsOn>$(CompileDependsOn);BuildRepositories</CompileDependsOn>
<PackageDependsOn Condition="'$(TestOnly)' != 'true'">$(PackageDependsOn);CopyPackagesByCategory</PackageDependsOn>
<PackageDependsOn Condition="'$(TestOnly)' != 'true'">$(PackageDependsOn);BuildAllMetapackage;BuildTemplates;SplitPackages</PackageDependsOn>
<VerifyDependsOn Condition="'$(TestOnly)' != 'true'">$(VerifyDependsOn);VerifyCoherentVersions</VerifyDependsOn>
</PropertyGroup>
@ -32,6 +34,10 @@
</Target>
<Target Name="RestoreExternalDependencies">
<DownloadNuGetPackages
Packages="@(ExternalDependency->WithMetadataValue('Mirror', 'false'))"
DestinationFolder="$(IntermediateExternalPackageDir)" />
<DownloadNuGetPackages
Packages="@(ExternalDependency->WithMetadataValue('Mirror', 'true'))"
DestinationFolder="$(IntermediateMirrorPackageDir)" />
@ -40,35 +46,70 @@
<Target Name="ResolveRepoInfo" DependsOnTargets="_PrepareRepositories">
<Error Text="%(Repository.RootPath) does not exist. Did you forget to clone the submodules? Run `git submodules update`." Condition="!Exists(%(Repository.RootPath))" />
<Error Text="%(ShippedRepository.RootPath) does not exist. Did you forget to clone the submodules? Run `git submodules update`." Condition="!Exists(%(ShippedRepository.RootPath))" />
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="GetArtifactInfo"
Properties="RepositoryRoot=%(Repository.RootPath);KoreBuildRestoreTargetsImported=true;Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
Properties="RepositoryRoot=%(Repository.RootPath);Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
ContinueOnError="WarnAndContinue">
<Output TaskParameter="TargetOutputs" ItemName="ArtifactInfo" />
</MSBuild>
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="ResolveSolutions"
Properties="RepositoryRoot=%(Repository.RootPath);KoreBuildRestoreTargetsImported=true;Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
Properties="RepositoryRoot=%(Repository.RootPath);Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
ContinueOnError="WarnAndContinue">
<Output TaskParameter="TargetOutputs" ItemName="Solution" />
</MSBuild>
<!--
Analyze what was shipped in these repos.
This is required so we can verify that cascading versions are consistent.
-->
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="GetArtifactInfo"
Properties="RepositoryRoot=%(ShippedRepository.RootPath);Configuration=$(Configuration);BuildNumber=$(BuildNumber);IsFinalBuild=true"
ContinueOnError="WarnAndContinue">
<Output TaskParameter="TargetOutputs" ItemName="ShippedArtifactInfo" />
</MSBuild>
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="ResolveSolutions"
Properties="RepositoryRoot=%(ShippedRepository.RootPath);Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
ContinueOnError="WarnAndContinue">
<Output TaskParameter="TargetOutputs" ItemName="_NoBuildSolution" />
</MSBuild>
<ItemGroup>
<Solution Update="@(Solution)" Build="true" />
<_NoBuildSolution Update="@(_NoBuildSolution)" Build="false" />
<Solution Include="@(_NoBuildSolution)" />
</ItemGroup>
<Error Text="No solutions were found in '$(SubmoduleRoot)'" Condition="@(Solution->Count()) == 0" />
</Target>
<Target Name="GenerateLineup" DependsOnTargets="ResolveRepoInfo">
<Target Name="GeneratePropsFiles" DependsOnTargets="ResolveRepoInfo">
<ItemGroup>
<PackageArtifactInfo Include="%(ArtifactInfo.PackageId)" Version="%(ArtifactInfo.Version)" Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetPackage'" />
<_LineupPackages Include="@(ExternalDependency)" />
<_LineupPackages Include="%(ArtifactInfo.PackageId)" Version="%(ArtifactInfo.Version)" Condition=" '%(ArtifactInfo.ArtifactType)' == 'NuGetPackage' " />
<_LineupPackages Include="Microsoft.AspNetCore.All" Version="$(PackageVersion)" />
<_LineupSources Include="$(_DependencyPackagesDirectory)" Condition="'$(_DependencyPackagesDirectory)' != '' AND Exists('$(_DependencyPackagesDirectory)')" />
<_LineupSources Include="$(BuildDir)" />
<_LineupSources Include="$(IntermediateExternalPackageDir)" />
<_LineupSources Include="$(IntermediateMirrorPackageDir)" />
</ItemGroup>
<GeneratePackageVersionPropsFile
Packages="@(ExternalDependency);@(PackageArtifactInfo)"
Packages="@(_LineupPackages)"
OutputPath="$(GeneratedPackageVersionPropsPath)" />
<Copy SourceFiles="$(GeneratedPackageVersionPropsPath)" DestinationFolder="$(ArtifactsDir)" />
<RepoTasks.GenerateRestoreSourcesPropsFile
Sources="@(_LineupSources)"
OutputPath="$(GeneratedRestoreSourcesPropsPath)" />
<PackNuSpec NuSpecPath="$(MSBuildThisFileDirectory)lineups\Internal.AspNetCore.Universe.Lineup.nuspec"
DestinationFolder="$(LineupBuildDir)"
Properties="version=$(Version);dependenciesPropsFile=$(GeneratedPackageVersionPropsPath)">
@ -76,6 +117,10 @@
</PackNuSpec>
</Target>
<Target Name="CleanUniverseArtifacts">
<RemoveDir Directories="$(RepositoryRoot)obj" Condition="Exists('$(RepositoryRoot)obj')" />
</Target>
<Target Name="_PrepareRepositories">
<ItemGroup Condition="'$(KOREBUILD_REPOSITORY_INCLUDE)'!=''">
<_RepositoriesToInclude Include="$(KOREBUILD_REPOSITORY_INCLUDE)" />
@ -99,53 +144,23 @@
<ItemGroup>
<Repository Update="%(Identity)" RootPath="$(SubmoduleRoot)%(Identity)\" />
<ShippedRepository Update="%(Identity)" RootPath="$(SubmoduleRoot)%(Identity)\" />
</ItemGroup>
</Target>
<Target Name="BuildRepositories"
DependsOnTargets="_PrepareRepositories;_UpdateNuGetConfig;_GenerateBuildGraph;_BuildRepositories" />
DependsOnTargets="_PrepareRepositories;_UpdateNuGetConfig;GeneratePropsFiles;ComputeGraph;_BuildRepositories" />
<Target Name="_PrepareRestoreGraphSpecs" DependsOnTargets="_PrepareRepositories">
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="ResolveSolutions"
Properties="RepositoryRoot=%(Repository.RootPath)"
ContinueOnError="WarnAndContinue"
Condition="%(Repository.Build)">
<Output TaskParameter="TargetOutputs" ItemName="Solution" />
</MSBuild>
<Error Text="No solutions were found. Did you remember to checkout the git submodules? Run `git submodules update`." Condition="@(Solution->Count()) == 0" />
<ItemGroup>
<Solution>
<AdditionalProperties>RestoreGraphOutputPath=$(_RestoreGraphSpecsDirectory)$([System.IO.Path]::GetFileName('$([System.IO.Path]::GetDirectoryName(%(FullPath)))'))\%(Solution.FileName)%(Solution.Extension).json</AdditionalProperties>
</Solution>
<GraphSpecInputs Include="
@(Solution);
$(SubmoduleRoot)**\*.csproj;
$(SubmoduleRoot)**\dependencies.props" />
<GraphSpecOutputs Include="$(_RestoreGraphSpecsDirectory)%(Solution.Repository)\%(Solution.FileName)%(Solution.Extension).json" />
</ItemGroup>
</Target>
<Target Name="_GenerateRestoreGraphSpecs" DependsOnTargets="_PrepareRestoreGraphSpecs" Inputs="@(GraphSpecInputs)" Outputs="@(GraphSpecOutputs)">
<MSBuild
Projects="@(Solution)"
Targets="GenerateRestoreGraphFile"
Properties="BuildNumber=$(BuildNumber);KoreBuildRestoreTargetsImported=true"
BuildInParallel="$(BuildInParallel)"
ContinueOnError="true" />
</Target>
<Target Name="_GenerateBuildGraph" DependsOnTargets="_GenerateRestoreGraphSpecs">
<RepoTasks.CalculateBuildGraph
Repositories="@(Repository->WithMetadataValue('Build', 'true'))"
<Target Name="ComputeGraph" DependsOnTargets="ResolveRepoInfo;GeneratePropsFiles">
<RepoTasks.AnalyzeBuildGraph
Solutions="@(Solution)"
Artifacts="@(ArtifactInfo)"
Dependencies="@(ExternalDependency)"
StartGraphAt="$(BuildGraphOf)"
DefaultPackageVersion="$(Version)"
PackageSpecsDirectory="$(_RestoreGraphSpecsDirectory)">
<Output TaskParameter="RepositoriesToBuildInOrder" ItemName="RepositoryToBuildInOrder" />
</RepoTasks.CalculateBuildGraph>
Properties="Configuration=$(Configuration);BuildNumber=$(BuildNumber);DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)">
<Output TaskParameter="RepositoryBuildOrder" ItemName="RepositoryBuildOrder" />
</RepoTasks.AnalyzeBuildGraph>
</Target>
<Target Name="_UpdateNuGetConfig">
@ -164,7 +179,7 @@
SourceUri="$(BuildDir)" />
</Target>
<Target Name="CopyPackagesByCategory">
<Target Name="SplitPackages">
<ItemGroup>
<PackageArtifactFile Include="$(BuildDir)*.nupkg" />
<ExternalDependencyPackage Include="@(ExternalDependency->WithMetadataValue('Mirror', 'true'))" Category="mirror" />
@ -186,11 +201,12 @@
<Target Name="VerifyCoherentVersions" DependsOnTargets="ResolveRepoInfo">
<ItemGroup>
<ShippingPackageFiles Include="$(ArtifactsDir)ship\*.nupkg" />
<ShippedExternalDependency Include="%(ShippedArtifactInfo.PackageId)" Version="%(Version)" />
</ItemGroup>
<RepoTasks.VerifyCoherentVersions
PackageFiles="@(ShippingPackageFiles)"
ExternalDependencies="@(ExternalDependency)" />
ExternalDependencies="@(ExternalDependency);@(ShippedExternalDependency)" />
</Target>
</Project>

Просмотреть файл

@ -0,0 +1,133 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using NuGet.Versioning;
using RepoTasks.Utilities;
namespace RepoTasks
{
public class AddArchiveReferences : Task
{
[Required]
public string ReferencePackagePath { get; set; }
[Required]
public string MetaPackageVersion { get; set; }
[Required]
public bool RemoveTimestamp { get; set; }
[Required]
public ITaskItem[] BuildArtifacts { get; set; }
[Required]
public ITaskItem[] PackageArtifacts { get; set; }
[Required]
public ITaskItem[] ExternalDependencies { get; set; }
public override bool Execute()
{
// Parse input
var externalArchiveArtifacts = ExternalDependencies.Where(p => p.GetMetadata("LZMA") == "true");
var externalArchiveTools = ExternalDependencies.Where(p => p.GetMetadata("LZMATools") == "true");
var archiveArtifacts = PackageArtifacts.Where(p => p.GetMetadata("LZMA") == "true");
var archiveTools = PackageArtifacts.Where(p => p.GetMetadata("LZMATools") == "true");
var buildArtifacts = BuildArtifacts.Select(ArtifactInfo.Parse)
.OfType<ArtifactInfo.Package>()
.Where(p => !p.IsSymbolsArtifact);
var xmlDoc = new XmlDocument();
xmlDoc.Load(ReferencePackagePath);
// Project
var projectElement = xmlDoc.FirstChild;
// Items
var itemGroupElement = xmlDoc.CreateElement("ItemGroup");
Log.LogMessage(MessageImportance.High, $"Archive will include the following packages");
foreach (var package in archiveArtifacts)
{
var packageName = package.ItemSpec;
var packageVersion = string.Equals(packageName, "Microsoft.AspNetCore.All", StringComparison.OrdinalIgnoreCase) ?
MetaPackageVersion :
buildArtifacts
.Single(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase))
.PackageInfo.Version.ToString();
if (RemoveTimestamp)
{
packageVersion = VersionUtilities.GetTimestampFreeVersion(packageVersion);
}
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
itemGroupElement.AppendChild(packageReferenceElement);
}
foreach (var package in externalArchiveArtifacts)
{
var packageName = package.ItemSpec;
var packageVersion = package.GetMetadata("Version");
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
itemGroupElement.AppendChild(packageReferenceElement);
}
foreach (var package in archiveTools)
{
var packageName = package.ItemSpec;
var packageVersion = buildArtifacts
.Single(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase))
.PackageInfo.Version.ToString();
if (RemoveTimestamp)
{
packageVersion = VersionUtilities.GetTimestampFreeVersion(packageVersion);
}
Log.LogMessage(MessageImportance.High, $" - Tool: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("DotNetCliToolReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
itemGroupElement.AppendChild(packageReferenceElement);
}
foreach (var package in externalArchiveTools)
{
var packageName = package.ItemSpec;
var packageVersion = package.GetMetadata("Version");
Log.LogMessage(MessageImportance.High, $" - Tool: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("DotNetCliToolReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
itemGroupElement.AppendChild(packageReferenceElement);
}
projectElement.AppendChild(itemGroupElement);
// Save updated file
xmlDoc.AppendChild(projectElement);
xmlDoc.Save(ReferencePackagePath);
return true;
}
}
}

Просмотреть файл

@ -0,0 +1,85 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using RepoTasks.Utilities;
namespace RepoTasks
{
public class AddMetapackageReferences : Task
{
[Required]
public string ReferencePackagePath { get; set; }
[Required]
public ITaskItem[] BuildArtifacts { get; set; }
[Required]
public ITaskItem[] PackageArtifacts { get; set; }
[Required]
public ITaskItem[] ExternalDependencies { get; set; }
public override bool Execute()
{
// Parse input
var metapackageArtifacts = PackageArtifacts.Where(p => p.GetMetadata("Metapackage") == "true");
var externalArtifacts = ExternalDependencies.Where(p => p.GetMetadata("Metapackage") == "true");
var buildArtifacts = BuildArtifacts.Select(ArtifactInfo.Parse)
.OfType<ArtifactInfo.Package>()
.Where(p => !p.IsSymbolsArtifact);
var xmlDoc = new XmlDocument();
xmlDoc.Load(ReferencePackagePath);
// Project
var projectElement = xmlDoc.FirstChild;
// Items
var itemGroupElement = xmlDoc.CreateElement("ItemGroup");
Log.LogMessage(MessageImportance.High, $"Metapackage will include the following packages");
foreach (var package in metapackageArtifacts)
{
var packageName = package.ItemSpec;
var packageVersion = buildArtifacts
.Single(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase))
.PackageInfo.Version.ToString();
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
packageReferenceElement.SetAttribute("PrivateAssets", "None");
itemGroupElement.AppendChild(packageReferenceElement);
}
foreach (var package in externalArtifacts)
{
var packageName = package.ItemSpec;
var packageVersion = package.GetMetadata("Version");
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
packageReferenceElement.SetAttribute("PrivateAssets", "None");
itemGroupElement.AppendChild(packageReferenceElement);
}
projectElement.AppendChild(itemGroupElement);
// Save updated file
xmlDoc.AppendChild(projectElement);
xmlDoc.Save(ReferencePackagePath);
return true;
}
}
}

Просмотреть файл

@ -0,0 +1,85 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using RepoTasks.Utilities;
namespace RepoTasks
{
public class AddRSReferences : Task
{
[Required]
public string ReferencePackagePath { get; set; }
[Required]
public ITaskItem[] BuildArtifacts { get; set; }
[Required]
public ITaskItem[] PackageArtifacts { get; set; }
[Required]
public ITaskItem[] ExternalDependencies { get; set; }
public override bool Execute()
{
// Parse input
var runtimeStoreArtifacts = PackageArtifacts.Where(p => p.GetMetadata("RuntimeStore") == "true");
var externalArtifacts = ExternalDependencies.Where(p => p.GetMetadata("RuntimeStore") == "true");
var buildArtifacts = BuildArtifacts.Select(ArtifactInfo.Parse)
.OfType<ArtifactInfo.Package>()
.Where(p => !p.IsSymbolsArtifact);
var xmlDoc = new XmlDocument();
xmlDoc.Load(ReferencePackagePath);
// Project
var projectElement = xmlDoc.FirstChild;
// Items
var itemGroupElement = xmlDoc.CreateElement("ItemGroup");
Log.LogMessage(MessageImportance.High, $"Runtime store will include the following packages");
foreach (var package in runtimeStoreArtifacts)
{
var packageName = package.ItemSpec;
var packageVersion = buildArtifacts
.Single(p => string.Equals(p.PackageInfo.Id, packageName, StringComparison.OrdinalIgnoreCase))
.PackageInfo.Version.ToString();
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
packageReferenceElement.SetAttribute("PrivateAssets", "None");
itemGroupElement.AppendChild(packageReferenceElement);
}
foreach (var package in externalArtifacts)
{
var packageName = package.ItemSpec;
var packageVersion = package.GetMetadata("Version");
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersion}");
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
packageReferenceElement.SetAttribute("Include", packageName);
packageReferenceElement.SetAttribute("Version", packageVersion);
packageReferenceElement.SetAttribute("PrivateAssets", "None");
itemGroupElement.AppendChild(packageReferenceElement);
}
projectElement.AppendChild(itemGroupElement);
// Save updated file
xmlDoc.AppendChild(projectElement);
xmlDoc.Save(ReferencePackagePath);
return true;
}
}
}

Просмотреть файл

@ -0,0 +1,245 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Threading;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using NuGet.Frameworks;
using NuGet.Versioning;
using RepoTools.BuildGraph;
using RepoTasks.ProjectModel;
using RepoTasks.Utilities;
namespace RepoTasks
{
public class AnalyzeBuildGraph : Task, ICancelableTask
{
private readonly CancellationTokenSource _cts = new CancellationTokenSource();
/// <summary>
/// Repositories that we are building new versions of.
/// </summary>
[Required]
public ITaskItem[] Solutions { get; set; }
[Required]
public ITaskItem[] Artifacts { get; set; }
[Required]
public ITaskItem[] Dependencies { get; set; }
[Required]
public string Properties { get; set; }
public string StartGraphAt { get; set; }
/// <summary>
/// The order in which to build repositories
/// </summary>
[Output]
public ITaskItem[] RepositoryBuildOrder { get; set; }
public void Cancel()
{
_cts.Cancel();
}
public override bool Execute()
{
var packageArtifacts = Artifacts.Select(ArtifactInfo.Parse)
.OfType<ArtifactInfo.Package>()
.Where(p => !p.IsSymbolsArtifact);
var factory = new SolutionInfoFactory(Log, BuildEngine5);
var props = MSBuildListSplitter.GetNamedProperties(Properties);
Log.LogMessage(MessageImportance.High, $"Beginning cross-repo analysis on {Solutions.Length} solutions. Hang tight...");
var solutions = factory.Create(Solutions, props, _cts.Token);
Log.LogMessage($"Found {solutions.Count} and {solutions.Sum(p => p.Projects.Count)} projects");
if (_cts.IsCancellationRequested)
{
return false;
}
EnsureConsistentGraph(packageArtifacts, solutions);
RepositoryBuildOrder = GetRepositoryBuildOrder(packageArtifacts, solutions.Where(s => s.ShouldBuild));
return !Log.HasLoggedErrors;
}
private struct VersionMismatch
{
public SolutionInfo Solution;
public ProjectInfo Project;
public string PackageId;
public string ActualVersion;
public NuGetVersion ExpectedVersion;
}
private void EnsureConsistentGraph(IEnumerable<ArtifactInfo.Package> packages, IEnumerable<SolutionInfo> solutions)
{
// ensure versions cascade
var buildPackageMap = packages.ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase);
var dependencyMap = new Dictionary<string, List<string>>(StringComparer.OrdinalIgnoreCase);
foreach (var dep in Dependencies)
{
if (!dependencyMap.TryGetValue(dep.ItemSpec, out var versions))
{
dependencyMap[dep.ItemSpec] = versions = new List<string>();
}
else if (dep.GetMetadata("NoWarn") == null || dep.GetMetadata("NoWarn").IndexOf("KRB" + KoreBuildErrors.MultipleExternalDependencyVersions) < 0)
{
Log.LogKoreBuildWarning(
KoreBuildErrors.MultipleExternalDependencyVersions,
message: $"Multiple versions of external dependency '{dep.ItemSpec}' are defined. In most cases, there should only be one version of external dependencies.");
}
versions.Add(dep.GetMetadata("Version"));
}
var inconsistentVersions = new List<VersionMismatch>();
var reposThatShouldPatch = new HashSet<string>();
// TODO cleanup the 4-deep nested loops
foreach (var solution in solutions)
foreach (var project in solution.Projects)
foreach (var tfm in project.Frameworks)
foreach (var dependency in tfm.Dependencies)
{
if (!buildPackageMap.TryGetValue(dependency.Key, out var package))
{
// This dependency is not one of the packages that will be compiled by this run of Universe.
if (!dependencyMap.TryGetValue(dependency.Key, out var externalVersions)
|| !externalVersions.Contains(dependency.Value.Version))
{
Log.LogKoreBuildError(
project.FullPath,
KoreBuildErrors.UndefinedExternalDependency,
message: $"Undefined external dependency on {dependency.Key}/{dependency.Value.Version}");
}
continue;
}
var refVersion = VersionRange.Parse(dependency.Value.Version);
if (refVersion.IsFloating && refVersion.Float.Satisfies(package.PackageInfo.Version))
{
continue;
}
else if (package.PackageInfo.Version.Equals(refVersion.MinVersion))
{
continue;
}
if (!solution.ShouldBuild)
{
reposThatShouldPatch.Add(Path.GetFileName(Path.GetDirectoryName(solution.FullPath)));
}
inconsistentVersions.Add(new VersionMismatch
{
Solution = solution,
Project = project,
PackageId = dependency.Key,
ActualVersion = dependency.Value.Version,
ExpectedVersion = package.PackageInfo.Version,
});
}
if (inconsistentVersions.Count != 0)
{
var sb = new StringBuilder();
sb.AppendLine();
sb.AppendLine($"Repos are inconsistent. The following projects have PackageReferences that should be updated");
foreach (var solution in inconsistentVersions.GroupBy(p => p.Solution.FullPath))
{
sb.Append(" - ").AppendLine(Path.GetFileName(solution.Key));
foreach (var project in solution.GroupBy(p => p.Project.FullPath))
{
sb.Append(" - ").AppendLine(Path.GetFileName(project.Key));
foreach (var mismatchedReference in project)
{
sb.AppendLine($" + {mismatchedReference.PackageId}/{{{mismatchedReference.ActualVersion} => {mismatchedReference.ExpectedVersion}}}");
}
}
}
sb.AppendLine();
Log.LogMessage(MessageImportance.High, sb.ToString());
Log.LogError("Package versions are inconsistent. See build log for details.");
}
foreach (var repo in reposThatShouldPatch)
{
Log.LogError($"{repo} should not be a 'ShippedRepository'. Version changes in other repositories mean it should be patched to perserve cascading version upgrades.");
}
}
private ITaskItem[] GetRepositoryBuildOrder(IEnumerable<ArtifactInfo.Package> artifacts, IEnumerable<SolutionInfo> solutions)
{
var repositories = solutions.Select(s =>
{
var repoName = Path.GetFileName(Path.GetDirectoryName(s.FullPath));
var repo = new Repository(repoName)
{
RootDir = Path.GetDirectoryName(s.FullPath)
};
var packages = artifacts.Where(a => a.RepoName.Equals(repoName, StringComparison.OrdinalIgnoreCase)).ToList();
foreach (var proj in s.Projects)
{
var projectGroup = packages.Any(p => p.PackageInfo.Id == proj.PackageId)
? repo.Projects
: repo.SupportProjects;
projectGroup.Add(new Project(proj.PackageId)
{
Repository = repo,
PackageReferences = new HashSet<string>(proj
.Frameworks
.SelectMany(f => f.Dependencies.Keys)
.Concat(proj.Tools.Select(t => t.Id)), StringComparer.OrdinalIgnoreCase),
});
}
return repo;
}).ToList();
var graph = GraphBuilder.Generate(repositories, StartGraphAt, Log);
var repositoriesWithOrder = new List<(ITaskItem repository, int order)>();
foreach (var repository in repositories)
{
var graphNodeRepository = graph.FirstOrDefault(g => g.Repository.Name == repository.Name);
if (graphNodeRepository == null)
{
// StartGraphAt was specified so the graph is incomplete.
continue;
}
var order = TopologicalSort.GetOrder(graphNodeRepository);
var repositoryTaskItem = new TaskItem(repository.Name);
repositoryTaskItem.SetMetadata("Order", order.ToString());
repositoryTaskItem.SetMetadata("RootPath", repository.RootDir);
repositoriesWithOrder.Add((repositoryTaskItem, order));
}
Log.LogMessage(MessageImportance.High, "Repository build order:");
foreach (var buildGroup in repositoriesWithOrder.GroupBy(r => r.order).OrderBy(g => g.Key))
{
var buildGroupRepos = buildGroup.Select(b => b.repository.ItemSpec);
Log.LogMessage(MessageImportance.High, $"{buildGroup.Key.ToString().PadLeft(2, ' ')}: {string.Join(", ", buildGroupRepos)}");
}
return repositoriesWithOrder
.OrderBy(r => r.order)
.Select(r => r.repository)
.ToArray();
}
}
}

Просмотреть файл

@ -1,30 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.IO;
using NuGet.ProjectModel;
namespace RepoTools.BuildGraph
{
public class DependencyGraphSpecProvider
{
readonly string _packageSpecDirectory;
public DependencyGraphSpecProvider(string packageSpecDirectory)
{
_packageSpecDirectory = packageSpecDirectory;
}
public DependencyGraphSpec GetDependencyGraphSpec(string repositoryName, string solutionPath)
{
var outputFile = Path.Combine(_packageSpecDirectory, repositoryName, Path.GetFileName(solutionPath) + ".json");
if (!File.Exists(outputFile))
{
return null;
}
return DependencyGraphSpec.Load(outputFile);
}
}
}

Просмотреть файл

@ -23,6 +23,6 @@ namespace RepoTools.BuildGraph
public Repository Repository { get; set; }
public ISet<string> PackageReferences { get; } = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
public ISet<string> PackageReferences { get; set; } = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
}
}

Просмотреть файл

@ -4,11 +4,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using NuGet.LibraryModel;
using NuGet.ProjectModel;
namespace RepoTools.BuildGraph
{
@ -22,111 +18,16 @@ namespace RepoTools.BuildGraph
public string Name { get; private set; }
public string RootDir { get; set; }
public IList<Project> Projects { get; } = new List<Project>();
public IList<Project> SupportProjects { get; } = new List<Project>();
public IEnumerable<Project> AllProjects => Projects.Concat(SupportProjects);
public static IList<Repository> ReadAllRepositories(IList<string> repositoryPaths, DependencyGraphSpecProvider provider)
{
var repositories = new Repository[repositoryPaths.Count];
Parallel.For(0, repositoryPaths.Count, new ParallelOptions { MaxDegreeOfParallelism = 6 }, i =>
{
var repositoryPath = repositoryPaths[i];
var repositoryName = Path.GetFileName(repositoryPath.TrimEnd(new [] { '\\', '/' }));
var repository = Read(provider, repositoryName, repositoryPath);
repositories[i] = repository;
});
return repositories;
}
public bool Equals(Repository other) => string.Equals(Name, other.Name, StringComparison.OrdinalIgnoreCase);
public override int GetHashCode() => StringComparer.OrdinalIgnoreCase.GetHashCode(Name);
private static Repository Read(DependencyGraphSpecProvider provider, string name, string repositoryPath)
{
var repository = new Repository(name);
ReadSharedSourceProjects(Path.Combine(repositoryPath, "shared"), repository, repository.Projects);
var srcDirectory = Path.GetFullPath(Path.Combine(repositoryPath, "src"))
.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
var solutionFiles = Directory.EnumerateFiles(repositoryPath, "*.sln");
foreach (var file in solutionFiles)
{
var spec = provider.GetDependencyGraphSpec(name, file);
if (spec == null)
{
continue;
}
var projects = spec.Projects.OrderBy(p => p.RestoreMetadata.ProjectStyle == ProjectStyle.PackageReference ? 0 : 1);
foreach (var specProject in projects)
{
var projectPath = Path.GetFullPath(specProject.FilePath)
.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
var projectGroup = projectPath.StartsWith(srcDirectory, StringComparison.OrdinalIgnoreCase) ?
repository.Projects :
repository.SupportProjects;
var project = projectGroup.FirstOrDefault(f => f.Path == specProject.FilePath);
if (project == null)
{
project = new Project(specProject.Name)
{
Repository = repository,
Path = specProject.FilePath,
Version = specProject.Version?.ToString(),
};
projectGroup.Add(project);
}
foreach (var package in GetPackageReferences(specProject))
{
project.PackageReferences.Add(package);
}
}
}
return repository;
}
private static List<string> GetPackageReferences(PackageSpec specProject)
{
var allDependencies = Enumerable.Concat(
specProject.Dependencies,
specProject.TargetFrameworks.SelectMany(tfm => tfm.Dependencies))
.Distinct();
var packageReferences = allDependencies
.Where(d => d.LibraryRange.TypeConstraintAllows(LibraryDependencyTarget.Package))
.Select(d => d.Name)
.ToList();
return packageReferences;
}
private static void ReadSharedSourceProjects(string sharedSourceProjectsRoot, Repository repository, IList<Project> projects)
{
if (!Directory.Exists(sharedSourceProjectsRoot))
{
return;
}
foreach (var directory in new DirectoryInfo(sharedSourceProjectsRoot).EnumerateDirectories())
{
var project = new Project(directory.Name)
{
Repository = repository,
};
projects.Add(project);
}
}
}
}

Просмотреть файл

@ -1,77 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using RepoTools.BuildGraph;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class CalculateBuildGraph : Task
{
[Required]
public ITaskItem[] Repositories { get; set; }
/// <summary>
/// Directory that contains the package spec files.
/// </summary>
[Required]
public string PackageSpecsDirectory { get; set; }
/// <summary>
/// Default to use for packages that may be produced from nuspec, not csproj. (e.g. .Sources packages).
/// </summary>
[Required]
public string DefaultPackageVersion { get; set; }
/// <summary>
/// The repository at which to root the graph at
/// </summary>
public string StartGraphAt { get; set; }
[Output]
public ITaskItem[] RepositoriesToBuildInOrder { get; set; }
public override bool Execute()
{
var graphSpecProvider = new DependencyGraphSpecProvider(PackageSpecsDirectory.Trim());
var repositoryPaths = Repositories.Select(r => r.GetMetadata("RootPath")).ToList();
var repositories = Repository.ReadAllRepositories(repositoryPaths, graphSpecProvider);
var graph = GraphBuilder.Generate(repositories, StartGraphAt, Log);
var repositoriesWithOrder = new List<(ITaskItem repository, int order)>();
foreach (var repositoryTaskItem in Repositories)
{
var repositoryName = repositoryTaskItem.ItemSpec;
var graphNodeRepository = graph.FirstOrDefault(g => g.Repository.Name == repositoryName);
if (graphNodeRepository == null)
{
// StartGraphAt was specified so the graph is incomplete.
continue;
}
var order = TopologicalSort.GetOrder(graphNodeRepository);
repositoryTaskItem.SetMetadata("Order", order.ToString());
repositoriesWithOrder.Add((repositoryTaskItem, order));
}
Log.LogMessage(MessageImportance.High, "Repository build order:");
foreach (var buildGroup in repositoriesWithOrder.GroupBy(r => r.order).OrderBy(g => g.Key))
{
var buildGroupRepos = buildGroup.Select(b => b.repository.ItemSpec);
Log.LogMessage(MessageImportance.High, $"{buildGroup.Key.ToString().PadLeft(2, ' ')}: {string.Join(", ", buildGroupRepos)}");
}
RepositoriesToBuildInOrder = repositoriesWithOrder
.OrderBy(r => r.order)
.Select(r => r.repository)
.ToArray();
return true;
}
}
}

Просмотреть файл

@ -0,0 +1,131 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.IO;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class ComposeNewStore : Task
{
[Required]
public ITaskItem[] ExistingManifests { get; set; }
[Required]
public ITaskItem[] NewManifests { get; set; }
[Required]
public ITaskItem[] RuntimeStoreFiles { get; set; }
[Required]
public ITaskItem[] RuntimeStoreSymbolFiles { get; set; }
[Required]
public string ManifestDestination { get; set; }
[Required]
public string StoreDestination { get; set; }
[Required]
public string SymbolsDestination { get; set; }
public override bool Execute()
{
var existingFiles = new Dictionary<string, HashSet<string>>();
var newRuntimeStoreFiles = new List<ITaskItem>();
var newRuntimeStoreSymbolFiles = new List<ITaskItem>();
// Construct database of existing assets
foreach (var manifest in ExistingManifests)
{
var xmlDoc = new XmlDocument();
xmlDoc.Load(manifest.GetMetadata("FullPath"));
var storeArtifacts = xmlDoc.SelectSingleNode("/StoreArtifacts");
foreach (XmlNode artifact in storeArtifacts.ChildNodes)
{
if (existingFiles.TryGetValue(artifact.Attributes["Id"].Value, out var versions))
{
versions.Add(artifact.Attributes["Version"].Value);
}
else
{
existingFiles[artifact.Attributes["Id"].Value] = new HashSet<string>{ artifact.Attributes["Version"].Value };
}
}
}
// Insert new runtime store files
foreach (var storeFile in RuntimeStoreFiles)
{
// format: {bitness}}/{tfm}}/{id}/{version}}/...
var recursiveDir = storeFile.GetMetadata("RecursiveDir");
var components = recursiveDir.Split(Path.DirectorySeparatorChar);
var id = components[2];
var version = components[3];
if (!existingFiles.TryGetValue(id, out var versions) || !versions.Contains(version))
{
var destinationDir = Path.Combine(StoreDestination, recursiveDir);
if (!Directory.Exists(Path.Combine(StoreDestination, recursiveDir)))
{
Directory.CreateDirectory(destinationDir);
}
File.Copy(storeFile.GetMetadata("FullPath"), Path.Combine(destinationDir, $"{storeFile.GetMetadata("Filename")}{storeFile.GetMetadata("Extension")}"), overwrite: true);
}
}
// Insert new runtime store files
foreach (var symbolFile in RuntimeStoreSymbolFiles)
{
// format: {bitness}}/{tfm}}/{id}/{version}}/...
var recursiveDir = symbolFile.GetMetadata("RecursiveDir");
var components = recursiveDir.Split(Path.DirectorySeparatorChar);
var id = components[2];
var version = components[3];
if (!existingFiles.TryGetValue(id, out var versions) || !versions.Contains(version))
{
var destinationDir = Path.Combine(SymbolsDestination, recursiveDir);
if (!Directory.Exists(Path.Combine(SymbolsDestination, recursiveDir)))
{
Directory.CreateDirectory(destinationDir);
}
File.Copy(symbolFile.GetMetadata("FullPath"), Path.Combine(destinationDir, $"{symbolFile.GetMetadata("Filename")}{symbolFile.GetMetadata("Extension")}"), overwrite: true);
}
}
// Purge existing packages from manifest
foreach (var newManifest in NewManifests)
{
var newManifestPath = newManifest.GetMetadata("FullPath");
var xmlDoc = new XmlDocument();
xmlDoc.Load(newManifestPath);
var storeArtifacts = xmlDoc.SelectSingleNode("/StoreArtifacts");
var artifactsToRemove = new List<XmlNode>();
foreach (XmlNode artifact in storeArtifacts.ChildNodes)
{
if (existingFiles.TryGetValue(artifact.Attributes["Id"].Value, out var versions) && versions.Contains(artifact.Attributes["Version"].Value))
{
artifactsToRemove.Add(artifact);
}
}
foreach (var artifactToRemove in artifactsToRemove)
{
storeArtifacts.RemoveChild(artifactToRemove);
}
xmlDoc.Save(ManifestDestination);
}
return true;
}
}
}

Просмотреть файл

@ -0,0 +1,57 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
// Takes multiple runtime store manifests and create a consolidated manifest containing all unique entries.
public class ConsolidateManifests : Task
{
[Required]
public ITaskItem[] Manifests { get; set; }
[Required]
public string ManifestDestination { get; set; }
public override bool Execute()
{
var artifacts = new HashSet<Tuple<string, string>>();
// Construct database of all artifacts
foreach (var manifest in Manifests)
{
var xmlDoc = new XmlDocument();
xmlDoc.Load(manifest.GetMetadata("FullPath"));
var storeArtifacts = xmlDoc.SelectSingleNode("/StoreArtifacts");
foreach (XmlNode artifact in storeArtifacts.ChildNodes)
{
artifacts.Add(new Tuple<string, string>(artifact.Attributes["Id"].Value, artifact.Attributes["Version"].Value));
}
}
var consolidatedXmlDoc = new XmlDocument();
var packagesElement = consolidatedXmlDoc.CreateElement("StoreArtifacts");
foreach (var artifact in artifacts)
{
var packageElement = consolidatedXmlDoc.CreateElement("Package");
packageElement.SetAttribute("Id", artifact.Item1);
packageElement.SetAttribute("Version", artifact.Item2);
packagesElement.AppendChild(packageElement);
}
consolidatedXmlDoc.AppendChild(packagesElement);
consolidatedXmlDoc.Save(ManifestDestination);
return true;
}
}
}

Просмотреть файл

@ -7,7 +7,7 @@ using System.Text;
using Microsoft.Build.Framework;
using NuGet.Packaging;
using NuGet.Packaging.Core;
using RepoTasks.ProjectModel;
using RepoTasks.Utilities;
namespace RepoTasks
{
@ -44,26 +44,22 @@ namespace RepoTasks
foreach (var file in Files)
{
var isSymbolsPackage = file.ItemSpec.EndsWith(".symbols.nupkg", StringComparison.OrdinalIgnoreCase);
PackageIdentity identity;
using (var reader = new PackageArchiveReader(file.ItemSpec))
{
identity = reader.GetIdentity();
}
var isSymbolsPackage = file.ItemSpec.EndsWith(".symbols.nupkg", StringComparison.OrdinalIgnoreCase);
PackageCategory category;
if (isSymbolsPackage)
{
category = PackageCategory.Symbols;
}
else
else if (!expectedPackages.TryGetCategory(identity.Id, out category))
{
if (!expectedPackages.TryGetCategory(identity.Id, out category))
{
Log.LogError($"Unexpected package artifact with id: {identity.Id}");
continue;
}
Log.LogError($"Unexpected package artifact with id: {identity.Id}");
continue;
}
string destDir;

Просмотреть файл

@ -0,0 +1,61 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
/// <summary>
/// Creates a common manifest file used for trimming publish output given a list of packages and package definitions containing their versions.
/// </summary>
public class CreateCommonManifest : Task
{
/// <summary>
/// The path for the common manifest file to be created.
/// </summary>
/// <returns></returns>
[Required]
public string DestinationFilePath { get; set; }
/// <summary>
/// The packages to include in the common manifest file.
/// </summary>
/// <returns></returns>
[Required]
public ITaskItem[] Packages { get; set; }
/// <summary>
/// The package definitions used for resolving package versions.
/// </summary>
/// <returns></returns>
[Required]
public ITaskItem[] PackageDefinitions { get; set; }
public override bool Execute()
{
var xmlDoc = new XmlDocument();
var packagesElement = xmlDoc.CreateElement("StoreArtifacts");
foreach (var package in Packages)
{
var packageName = package.ItemSpec;
var packageElement = xmlDoc.CreateElement("Package");
packageElement.SetAttribute("Id", packageName);
packageElement.SetAttribute("Version", PackageDefinitions
.Where(p => string.Equals(p.GetMetadata("Name"), packageName, StringComparison.OrdinalIgnoreCase))
.Select(p => p.GetMetadata("Version")).Single());
packagesElement.AppendChild(packageElement);
}
xmlDoc.AppendChild(packagesElement);
xmlDoc.Save(DestinationFilePath);
return true;
}
}
}

Просмотреть файл

@ -0,0 +1,196 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using NuGet.Build;
using NuGet.Commands;
using NuGet.Configuration;
using NuGet.DependencyResolver;
using NuGet.Packaging.Core;
using NuGet.Protocol;
using NuGet.Protocol.Core.Types;
using NuGet.Versioning;
using Task = System.Threading.Tasks.Task;
namespace RepoTasks
{
public class DownloadNuGetPackages : Microsoft.Build.Utilities.Task, ICancelableTask
{
private static readonly Task<bool> FalseTask = Task.FromResult(false);
private readonly CancellationTokenSource _cts = new CancellationTokenSource();
[Required]
public ITaskItem[] Packages { get; set; }
[Required]
public string DestinationFolder { get; set; }
[Output]
public ITaskItem[] Files { get; set; }
public void Cancel() => _cts.Cancel();
public override bool Execute()
{
return ExecuteAsync().GetAwaiter().GetResult();
}
public async Task<bool> ExecuteAsync()
{
DestinationFolder = DestinationFolder.Replace('\\', '/');
var requests = new Dictionary<string, List<PackageIdentity>>(StringComparer.OrdinalIgnoreCase);
var files = new List<ITaskItem>();
var downloadCount = 0;
foreach (var item in Packages)
{
var id = item.ItemSpec;
var rawVersion = item.GetMetadata("Version");
if (!NuGetVersion.TryParse(rawVersion, out var version))
{
Log.LogError($"Package '{id}' has an invalid 'Version' metadata value: '{rawVersion}'.");
return false;
}
var source = item.GetMetadata("Source");
if (string.IsNullOrEmpty(source))
{
Log.LogError($"Package '{id}' is missing the 'Source' metadata value.");
return false;
}
if (!requests.TryGetValue(source, out var packages))
{
packages = requests[source] = new List<PackageIdentity>();
}
var request = new PackageIdentity(id, version);
var dest = GetExpectedOutputPath(request);
files.Add(new TaskItem(dest));
if (File.Exists(dest))
{
Log.LogMessage($"Skipping {request.Id} {request.Version}. Already exists in '{dest}'");
continue;
}
else
{
downloadCount++;
packages.Add(request);
}
}
Files = files.ToArray();
if (downloadCount == 0)
{
Log.LogMessage("All packages are downloaded.");
return true;
}
Directory.CreateDirectory(DestinationFolder);
var logger = new MSBuildLogger(Log);
var timer = Stopwatch.StartNew();
logger.LogMinimal($"Downloading {downloadCount} package(s)");
using (var cacheContext = new SourceCacheContext())
{
var defaultSettings = Settings.LoadDefaultSettings(root: null, configFileName: null, machineWideSettings: null);
var sourceProvider = new CachingSourceProvider(new PackageSourceProvider(defaultSettings));
var tasks = new List<Task<bool>>();
foreach (var feed in requests)
{
var repo = sourceProvider.CreateRepository(new PackageSource(feed.Key));
tasks.Add(DownloadPackagesAsync(repo, feed.Value, cacheContext, logger, _cts.Token));
}
var all = Task.WhenAll(tasks);
var wait = TimeSpan.FromSeconds(Math.Max(downloadCount * 5, 120));
var delay = Task.Delay(wait);
var finished = await Task.WhenAny(all, delay);
if (ReferenceEquals(delay, finished))
{
Log.LogError($"Timed out after {wait.TotalSeconds}s");
Cancel();
return false;
}
if (!tasks.All(a => a.Result))
{
Log.LogError("Failed to download all packages");
return false;
}
timer.Stop();
logger.LogMinimal($"Finished downloading {downloadCount} package(s) in {timer.ElapsedMilliseconds}ms");
return true;
}
}
private async Task<bool> DownloadPackagesAsync(
SourceRepository repo,
IEnumerable<PackageIdentity> requests,
SourceCacheContext cacheContext,
NuGet.Common.ILogger logger,
CancellationToken cancellationToken)
{
var remoteLibraryProvider = new SourceRepositoryDependencyProvider(repo, logger, cacheContext, ignoreFailedSources: false, ignoreWarning: false);
var downloads = new List<Task<bool>>();
var metadataResource = await repo.GetResourceAsync<MetadataResource>();
foreach (var request in requests)
{
cancellationToken.ThrowIfCancellationRequested();
if (metadataResource != null && !await metadataResource.Exists(request, logger, cancellationToken))
{
logger.LogError($"Package {request.Id} {request.Version} is not available on '{repo}'");
downloads.Add(FalseTask);
continue;
}
var download = DownloadPackageAsync(cacheContext, logger, remoteLibraryProvider, request, cancellationToken);
downloads.Add(download);
}
await Task.WhenAll(downloads);
return downloads.All(d => d.Result);
}
private async Task<bool> DownloadPackageAsync(SourceCacheContext cacheContext,
NuGet.Common.ILogger logger,
SourceRepositoryDependencyProvider remoteLibraryProvider,
PackageIdentity request,
CancellationToken cancellationToken)
{
var dest = GetExpectedOutputPath(request);
logger.LogInformation($"Downloading {request.Id} {request.Version} to '{dest}'");
using (var packageDependency = await remoteLibraryProvider.GetPackageDownloaderAsync(request, cacheContext, logger, cancellationToken))
{
if (!await packageDependency.CopyNupkgFileToAsync(dest, cancellationToken))
{
logger.LogError($"Could not download {request.Id} {request.Version} from {remoteLibraryProvider.Source}");
return false;
}
}
return true;
}
private string GetExpectedOutputPath(PackageIdentity request)
{
return Path.Combine(DestinationFolder, $"{request.Id.ToLowerInvariant()}.{request.Version.ToNormalizedString()}.nupkg");
}
}
}

Просмотреть файл

@ -0,0 +1,125 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Xml;
using System.Xml.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using RepoTasks.ProjectModel;
using RepoTasks.Utilities;
using System.Text;
namespace RepoTasks
{
public class GeneratePackageVersionPropsFile : Task
{
[Required]
public ITaskItem[] Packages { get; set; }
[Required]
public string OutputPath { get; set; }
public override bool Execute()
{
OutputPath = OutputPath.Replace('\\', '/');
Directory.CreateDirectory(Path.GetDirectoryName(OutputPath));
var props = new XElement("PropertyGroup");
var root = new XElement("Project", props);
var doc = new XDocument(root);
props.Add(new XElement("MSBuildAllProjects", "$(MSBuildAllProjects);$(MSBuildThisFileFullPath)"));
var varNames = new HashSet<string>();
var versionElements = new List<XElement>();
foreach (var pkg in Packages)
{
var packageVersion = pkg.GetMetadata("Version");
if (string.IsNullOrEmpty(packageVersion))
{
Log.LogError("Package {0} is missing the Version metadata", pkg.ItemSpec);
continue;
}
string packageVarName;
if (!string.IsNullOrEmpty(pkg.GetMetadata("VariableName")))
{
packageVarName = pkg.GetMetadata("VariableName");
if (!packageVarName.EndsWith("Version", StringComparison.Ordinal))
{
Log.LogError("VariableName for {0} must end in 'Version'", pkg.ItemSpec);
continue;
}
}
else
{
packageVarName = GetVariableName(pkg.ItemSpec);
}
var packageTfm = pkg.GetMetadata("TargetFramework");
var key = $"{packageVarName}/{packageTfm}";
if (varNames.Contains(key))
{
Log.LogError("Multiple packages would produce {0} in the generated dependencies.props file. Set VariableName to differentiate the packages manually", key);
continue;
}
varNames.Add(key);
var elem = new XElement(packageVarName, packageVersion);
if (!string.IsNullOrEmpty(packageTfm))
{
elem.Add(new XAttribute("Condition", $" '$(TargetFramework)' == '{packageTfm}' "));
}
versionElements.Add(elem);
}
foreach (var item in versionElements.OrderBy(p => p.Name.ToString()))
{
props.Add(item);
}
var settings = new XmlWriterSettings
{
OmitXmlDeclaration = true,
Indent = true,
};
using (var writer = XmlWriter.Create(OutputPath, settings))
{
Log.LogMessage(MessageImportance.Normal, $"Generate {OutputPath}");
doc.Save(writer);
}
return !Log.HasLoggedErrors;
}
private string GetVariableName(string packageId)
{
var sb = new StringBuilder();
var first = true;
foreach (var ch in packageId)
{
if (ch == '.')
{
first = true;
continue;
}
if (first)
{
first = false;
sb.Append(char.ToUpperInvariant(ch));
}
else
{
sb.Append(ch);
}
}
sb.Append("PackageVersion");
return sb.ToString();
}
}
}

Просмотреть файл

@ -0,0 +1,55 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class GenerateRestoreSourcesPropsFile : Task
{
[Required]
public ITaskItem[] Sources { get; set; }
[Required]
public string OutputPath { get; set; }
public override bool Execute()
{
OutputPath = OutputPath.Replace('\\', '/');
Directory.CreateDirectory(Path.GetDirectoryName(OutputPath));
var sources = new XElement("DotNetRestoreSources");
var propertyGroup = new XElement("PropertyGroup", sources);
var doc = new XDocument(new XElement("Project", propertyGroup));
propertyGroup.Add(new XElement("MSBuildAllProjects", "$(MSBuildAllProjects);$(MSBuildThisFileFullPath)"));
var sb = new StringBuilder();
foreach (var source in Sources)
{
sb.Append(source.ItemSpec).AppendLine(";");
}
sources.SetValue(sb.ToString());
var settings = new XmlWriterSettings
{
OmitXmlDeclaration = true,
};
using (var writer = XmlWriter.Create(OutputPath, settings))
{
Log.LogMessage(MessageImportance.Normal, $"Generate {OutputPath}");
doc.Save(writer);
}
return !Log.HasLoggedErrors;
}
}
}

Просмотреть файл

@ -0,0 +1,200 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using NuGet.Common;
namespace NuGet.Build
{
/// <summary>
/// TaskLoggingHelper -> ILogger
/// </summary>
internal class MSBuildLogger : LoggerBase, Common.ILogger
{
private readonly TaskLoggingHelper _taskLogging;
private delegate void LogMessageWithDetails(string subcategory,
string code,
string helpKeyword,
string file,
int lineNumber,
int columnNumber,
int endLineNumber,
int endColumnNumber,
MessageImportance importance,
string message,
params object[] messageArgs);
private delegate void LogErrorWithDetails(string subcategory,
string code,
string helpKeyword,
string file,
int lineNumber,
int columnNumber,
int endLineNumber,
int endColumnNumber,
string message,
params object[] messageArgs);
private delegate void LogMessageAsString(MessageImportance importance,
string message,
params object[] messageArgs);
private delegate void LogErrorAsString(string message,
params object[] messageArgs);
public MSBuildLogger(TaskLoggingHelper taskLogging)
{
_taskLogging = taskLogging ?? throw new ArgumentNullException(nameof(taskLogging));
}
public override void Log(ILogMessage message)
{
if (DisplayMessage(message.Level))
{
if (RuntimeEnvironmentHelper.IsMono)
{
LogForMono(message);
return;
}
else
{
var logMessage = message as IRestoreLogMessage;
if (logMessage == null)
{
logMessage = new RestoreLogMessage(message.Level, message.Message)
{
Code = message.Code,
FilePath = message.ProjectPath
};
}
LogForNonMono(logMessage);
}
}
}
/// <summary>
/// Log using with metadata for non mono platforms.
/// </summary>
private void LogForNonMono(IRestoreLogMessage message)
{
switch (message.Level)
{
case LogLevel.Error:
LogError(message, _taskLogging.LogError, _taskLogging.LogError);
break;
case LogLevel.Warning:
LogError(message, _taskLogging.LogWarning, _taskLogging.LogWarning);
break;
case LogLevel.Minimal:
LogMessage(message, MessageImportance.High, _taskLogging.LogMessage, _taskLogging.LogMessage);
break;
case LogLevel.Information:
LogMessage(message, MessageImportance.Normal, _taskLogging.LogMessage, _taskLogging.LogMessage);
break;
case LogLevel.Debug:
case LogLevel.Verbose:
default:
// Default to LogLevel.Debug and low importance
LogMessage(message, MessageImportance.Low, _taskLogging.LogMessage, _taskLogging.LogMessage);
break;
}
}
/// <summary>
/// Log using basic methods to avoid missing methods on mono.
/// </summary>
private void LogForMono(ILogMessage message)
{
switch (message.Level)
{
case LogLevel.Error:
_taskLogging.LogError(message.Message);
break;
case LogLevel.Warning:
_taskLogging.LogWarning(message.Message);
break;
case LogLevel.Minimal:
_taskLogging.LogMessage(MessageImportance.High, message.Message);
break;
case LogLevel.Information:
_taskLogging.LogMessage(MessageImportance.Normal, message.Message);
break;
case LogLevel.Debug:
case LogLevel.Verbose:
default:
// Default to LogLevel.Debug and low importance
_taskLogging.LogMessage(MessageImportance.Low, message.Message);
break;
}
return;
}
private void LogMessage(IRestoreLogMessage logMessage,
MessageImportance importance,
LogMessageWithDetails logWithDetails,
LogMessageAsString logAsString)
{
if (logMessage.Code > NuGetLogCode.Undefined)
{
// NuGet does not currently have a subcategory while throwing logs, hence string.Empty
logWithDetails(string.Empty,
Enum.GetName(typeof(NuGetLogCode), logMessage.Code),
Enum.GetName(typeof(NuGetLogCode), logMessage.Code),
logMessage.FilePath,
logMessage.StartLineNumber,
logMessage.StartColumnNumber,
logMessage.EndLineNumber,
logMessage.EndColumnNumber,
importance,
logMessage.Message);
}
else
{
logAsString(importance, logMessage.Message);
}
}
private void LogError(IRestoreLogMessage logMessage,
LogErrorWithDetails logWithDetails,
LogErrorAsString logAsString)
{
if (logMessage.Code > NuGetLogCode.Undefined)
{
// NuGet does not currently have a subcategory while throwing logs, hence string.Empty
logWithDetails(string.Empty,
Enum.GetName(typeof(NuGetLogCode), logMessage.Code),
Enum.GetName(typeof(NuGetLogCode), logMessage.Code),
logMessage.FilePath,
logMessage.StartLineNumber,
logMessage.StartColumnNumber,
logMessage.EndLineNumber,
logMessage.EndColumnNumber,
logMessage.Message);
}
else
{
logAsString(logMessage.Message);
}
}
public override System.Threading.Tasks.Task LogAsync(ILogMessage message)
{
Log(message);
return System.Threading.Tasks.Task.FromResult(0);
}
}
}

Просмотреть файл

@ -0,0 +1,24 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
namespace RepoTasks.ProjectModel
{
internal class DotNetCliReferenceInfo
{
public DotNetCliReferenceInfo(string id, string version)
{
if (string.IsNullOrEmpty(id))
{
throw new ArgumentException(nameof(id));
}
Id = id;
Version = version;
}
public string Id { get; }
public string Version { get; }
}
}

Просмотреть файл

@ -0,0 +1,29 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
namespace RepoTasks.ProjectModel
{
internal class PackageReferenceInfo
{
public PackageReferenceInfo(string id, string version, bool isImplicitlyDefined, IReadOnlyList<string> noWarn)
{
if (string.IsNullOrEmpty(id))
{
throw new ArgumentException(nameof(id));
}
Id = id;
Version = version;
IsImplicitlyDefined = isImplicitlyDefined;
NoWarn = noWarn;
}
public string Id { get; }
public string Version { get; }
public bool IsImplicitlyDefined { get; }
public IReadOnlyList<string> NoWarn { get; }
}
}

Просмотреть файл

@ -0,0 +1,22 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using NuGet.Frameworks;
namespace RepoTasks.ProjectModel
{
internal class ProjectFrameworkInfo
{
public ProjectFrameworkInfo(NuGetFramework targetFramework, IReadOnlyDictionary<string, PackageReferenceInfo> dependencies)
{
TargetFramework = targetFramework ?? throw new ArgumentNullException(nameof(targetFramework));
Dependencies = dependencies ?? throw new ArgumentNullException(nameof(dependencies));
}
public NuGetFramework TargetFramework { get; }
public IReadOnlyDictionary<string, PackageReferenceInfo> Dependencies { get; }
}
}

Просмотреть файл

@ -0,0 +1,48 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.IO;
namespace RepoTasks.ProjectModel
{
internal class ProjectInfo
{
public ProjectInfo(string fullPath,
string projectExtensionsPath,
IReadOnlyList<ProjectFrameworkInfo> frameworks,
IReadOnlyList<DotNetCliReferenceInfo> tools,
bool isPackable,
string packageId,
string packageVersion)
{
if (!Path.IsPathRooted(fullPath))
{
throw new ArgumentException("Path must be absolute", nameof(fullPath));
}
Frameworks = frameworks ?? throw new ArgumentNullException(nameof(frameworks));
Tools = tools ?? throw new ArgumentNullException(nameof(tools));
FullPath = fullPath;
FileName = Path.GetFileName(fullPath);
Directory = Path.GetDirectoryName(FullPath);
ProjectExtensionsPath = projectExtensionsPath ?? Path.Combine(Directory, "obj");
IsPackable = isPackable;
PackageId = packageId;
PackageVersion = packageVersion;
}
public string FullPath { get; }
public string FileName { get; }
public string ProjectExtensionsPath { get; }
public string Directory { get; }
public string PackageId { get; }
public string PackageVersion { get; }
public bool IsPackable { get; }
public IReadOnlyList<ProjectFrameworkInfo> Frameworks { get; }
public IReadOnlyList<DotNetCliReferenceInfo> Tools { get; }
}
}

Просмотреть файл

@ -0,0 +1,134 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Microsoft.Build.Construction;
using Microsoft.Build.Evaluation;
using Microsoft.Build.Execution;
using NuGet.Frameworks;
using RepoTasks.Utilities;
using Microsoft.Build.Utilities;
namespace RepoTasks.ProjectModel
{
internal class ProjectInfoFactory
{
private readonly TaskLoggingHelper _logger;
public ProjectInfoFactory(TaskLoggingHelper logger)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public ProjectInfo Create(string path, ProjectCollection projectCollection)
{
var project = GetProject(path, projectCollection);
var instance = project.CreateProjectInstance(ProjectInstanceSettings.ImmutableWithFastItemLookup);
var projExtPath = instance.GetPropertyValue("MSBuildProjectExtensionsPath");
var targetFrameworks = instance.GetPropertyValue("TargetFrameworks");
var targetFramework = instance.GetPropertyValue("TargetFramework");
var frameworks = new List<ProjectFrameworkInfo>();
if (!string.IsNullOrEmpty(targetFrameworks) && string.IsNullOrEmpty(targetFramework))
{
// multi targeting
foreach (var tfm in targetFrameworks.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
{
project.SetGlobalProperty("TargetFramework", tfm);
var innerBuild = project.CreateProjectInstance(ProjectInstanceSettings.ImmutableWithFastItemLookup);
var tfmInfo = new ProjectFrameworkInfo(NuGetFramework.Parse(tfm), GetDependencies(innerBuild));
frameworks.Add(tfmInfo);
}
project.RemoveGlobalProperty("TargetFramework");
}
else if (!string.IsNullOrEmpty(targetFramework))
{
var tfmInfo = new ProjectFrameworkInfo(NuGetFramework.Parse(targetFramework), GetDependencies(instance));
frameworks.Add(tfmInfo);
}
var projectDir = Path.GetDirectoryName(path);
var tools = GetTools(instance).ToArray();
bool.TryParse(instance.GetPropertyValue("IsPackable"), out var isPackable);
var packageId = instance.GetPropertyValue("PackageId");
var packageVersion = instance.GetPropertyValue("PackageVersion");
return new ProjectInfo(path,
projExtPath,
frameworks,
tools,
isPackable,
packageId,
packageVersion);
}
private static object _projLock = new object();
private static Project GetProject(string path, ProjectCollection projectCollection)
{
var projects = projectCollection.GetLoadedProjects(path);
foreach(var proj in projects)
{
if (proj.GetPropertyValue("DesignTimeBuild") == "true")
{
return proj;
}
}
var xml = ProjectRootElement.Open(path, projectCollection);
var globalProps = new Dictionary<string, string>()
{
["DesignTimeBuild"] = "true",
};
var project = new Project(xml,
globalProps,
toolsVersion: "15.0",
projectCollection: projectCollection)
{
IsBuildEnabled = false
};
return project;
}
private IReadOnlyDictionary<string, PackageReferenceInfo> GetDependencies(ProjectInstance project)
{
var references = new Dictionary<string, PackageReferenceInfo>(StringComparer.OrdinalIgnoreCase);
foreach (var item in project.GetItems("PackageReference"))
{
bool.TryParse(item.GetMetadataValue("IsImplicitlyDefined"), out var isImplicit);
var noWarn = item.GetMetadataValue("NoWarn");
IReadOnlyList<string> noWarnItems = string.IsNullOrEmpty(noWarn)
? Array.Empty<string>()
: MSBuildListSplitter.SplitItemList(noWarn).ToArray();
var info = new PackageReferenceInfo(item.EvaluatedInclude, item.GetMetadataValue("Version"), isImplicit, noWarnItems);
if (references.ContainsKey(info.Id))
{
_logger.LogKoreBuildWarning(project.ProjectFileLocation.File, KoreBuildErrors.DuplicatePackageReference, $"Found a duplicate PackageReference for {info.Id}. Restore results may be unpredictable.");
}
references[info.Id] = info;
}
return references;
}
private static IEnumerable<DotNetCliReferenceInfo> GetTools(ProjectInstance project)
{
return project.GetItems("DotNetCliToolReference").Select(item =>
new DotNetCliReferenceInfo(item.EvaluatedInclude, item.GetMetadataValue("Version")));
}
}
}

Просмотреть файл

@ -0,0 +1,34 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
namespace RepoTasks.ProjectModel
{
internal class SolutionInfo
{
public SolutionInfo(string fullPath, string configName, IReadOnlyList<ProjectInfo> projects, bool shouldBuild)
{
if (string.IsNullOrEmpty(fullPath))
{
throw new ArgumentException(nameof(fullPath));
}
if (string.IsNullOrEmpty(configName))
{
throw new ArgumentException(nameof(configName));
}
FullPath = fullPath;
ConfigName = configName;
Projects = projects ?? throw new ArgumentNullException(nameof(projects));
ShouldBuild = shouldBuild;
}
public string FullPath { get; }
public string ConfigName { get; }
public IReadOnlyList<ProjectInfo> Projects { get; }
public bool ShouldBuild { get; }
}
}

Просмотреть файл

@ -0,0 +1,134 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Build.Construction;
using Microsoft.Build.Evaluation;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using RepoTasks.Utilities;
namespace RepoTasks.ProjectModel
{
internal class SolutionInfoFactory
{
private readonly TaskLoggingHelper _logger;
private readonly IBuildEngine4 _buildEngine;
public SolutionInfoFactory(TaskLoggingHelper logger, IBuildEngine4 buildEngine)
{
_logger = logger;
_buildEngine = buildEngine;
}
public IReadOnlyList<SolutionInfo> Create(IEnumerable<ITaskItem> solutionItems, IDictionary<string, string> properties, CancellationToken ct)
{
var timer = Stopwatch.StartNew();
var solutions = new ConcurrentBag<SolutionInfo>();
Parallel.ForEach(solutionItems, solution =>
{
if (ct.IsCancellationRequested)
{
return;
}
var solutionFile = solution.ItemSpec.Replace('\\', '/');
var solutionProps = new Dictionary<string, string>(properties, StringComparer.OrdinalIgnoreCase);
foreach (var prop in MSBuildListSplitter.GetNamedProperties(solution.GetMetadata("AdditionalProperties")))
{
solutionProps[prop.Key] = prop.Value;
}
if (solutionProps.TryGetValue("Configuration", out var configName))
{
solutionProps["Configuration"] = configName = "Debug";
}
var key = $"SlnInfo:{solutionFile}:{configName}";
var obj = _buildEngine.GetRegisteredTaskObject(key, RegisteredTaskObjectLifetime.Build);
if (obj is SolutionInfo cachedSlnInfo)
{
solutions.Add(cachedSlnInfo);
return;
}
_logger.LogMessage($"Analyzing {solutionFile} ({configName})");
var projects = new ConcurrentBag<ProjectInfo>();
var projectFiles = GetProjectsForSolutionConfig(solutionFile, configName);
using (var projCollection = new ProjectCollection(solutionProps) { IsBuildEnabled = false })
{
Parallel.ForEach(projectFiles, projectFile =>
{
if (ct.IsCancellationRequested)
{
return;
}
try
{
projects.Add(new ProjectInfoFactory(_logger).Create(projectFile, projCollection));
}
catch (Exception ex)
{
_logger.LogErrorFromException(ex);
}
});
}
bool.TryParse(solution.GetMetadata("Build"), out var shouldBuild);
var solutionInfo = new SolutionInfo(
solutionFile,
configName,
projects.ToArray(),
shouldBuild);
_buildEngine.RegisterTaskObject(key, solutionInfo, RegisteredTaskObjectLifetime.Build, allowEarlyCollection: true);
solutions.Add(solutionInfo);
});
timer.Stop();
_logger.LogMessage(MessageImportance.High, $"Finished design-time build in {timer.ElapsedMilliseconds}ms");
return solutions.ToArray();
}
private IList<string> GetProjectsForSolutionConfig(string filePath, string configName)
{
var sln = SolutionFile.Parse(filePath);
if (string.IsNullOrEmpty(configName))
{
configName = sln.GetDefaultConfigurationName();
}
var projects = new List<string>();
var config = sln.SolutionConfigurations.FirstOrDefault(c => c.ConfigurationName == configName);
if (config == null)
{
throw new InvalidOperationException($"A solution configuration by the name of '{configName}' was not found in '{filePath}'");
}
foreach (var project in sln.ProjectsInOrder
.Where(p =>
p.ProjectType == SolutionProjectType.KnownToBeMSBuildFormat // skips solution folders
&& p.ProjectConfigurations.TryGetValue(config.FullName, out var projectConfig)
&& projectConfig.IncludeInBuild))
{
projects.Add(project.AbsolutePath.Replace('\\', '/'));
}
return projects;
}
}
}

Просмотреть файл

@ -0,0 +1,33 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.IO;
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class ReplaceInFile : Task
{
[Required]
public string Filename { get; set; }
[Required]
public ITaskItem[] Items { get; set; }
public override bool Execute()
{
var fileText = File.ReadAllText(Filename);
foreach (var item in Items)
{
fileText = fileText.Replace(item.ItemSpec, item.GetMetadata("Replacement"));
}
File.WriteAllText(Filename, fileText);
return true;
}
}
}

Просмотреть файл

@ -3,11 +3,10 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<NETStandardImplicitPackageVersion>2.0.0-*</NETStandardImplicitPackageVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NuGet.ProjectModel" Version="$(NuGetInMSBuildVersion)" PrivateAssets="All" />
<PackageReference Include="NuGet.Build.Tasks" Version="$(NuGetInMSBuildVersion)" PrivateAssets="All" />
</ItemGroup>
<Import Project="$(RepoTasksSdkPath)\Sdk.targets" Condition="'$(RepoTasksSdkPath)' != '' "/>

Просмотреть файл

@ -3,7 +3,19 @@
<_RepoTaskAssembly>$(MSBuildThisFileDirectory)bin\publish\RepoTasks.dll</_RepoTaskAssembly>
</PropertyGroup>
<UsingTask TaskName="RepoTasks.CalculateBuildGraph" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.AnalyzeBuildGraph" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.CopyPackagesToSplitFolders" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.DownloadNuGetPackages" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.GeneratePackageVersionPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.GenerateRestoreSourcesPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.VerifyCoherentVersions" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.AddMetapackageReferences" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.AddArchiveReferences" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.AddRSReferences" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ResolveHostingStartupPackages" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.TrimDeps" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.CreateCommonManifest" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ComposeNewStore" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ConsolidateManifests" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.ReplaceInFile" AssemblyFile="$(_RepoTaskAssembly)" />
</Project>

Просмотреть файл

@ -0,0 +1,30 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class ResolveHostingStartupPackages : Task
{
[Required]
public ITaskItem[] BuildArtifacts { get; set; }
[Required]
public ITaskItem[] PackageArtifacts { get; set; }
[Output]
public ITaskItem[] HostingStartupArtifacts { get; set; }
public override bool Execute()
{
// Parse input
var hostingStartupArtifacts = PackageArtifacts.Where(p => p.GetMetadata("HostingStartup") == "true");
HostingStartupArtifacts = BuildArtifacts.Where(p => hostingStartupArtifacts.Any(h => h.GetMetadata("Identity") == p.GetMetadata("PackageId"))).ToArray();
return true;
}
}
}

60
build/tasks/TrimDeps.cs Normal file
Просмотреть файл

@ -0,0 +1,60 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.IO;
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace RepoTasks
{
public class TrimDeps : Task
{
[Required]
public ITaskItem[] DepsFiles { get; set; }
public override bool Execute()
{
foreach (var depsFile in DepsFiles)
{
ChangeEntryPointLibraryName(depsFile.GetMetadata("Identity"));
}
// Parse input
return true;
}
private void ChangeEntryPointLibraryName(string depsFile)
{
JToken deps;
using (var file = File.OpenText(depsFile))
using (JsonTextReader reader = new JsonTextReader(file))
{
deps = JObject.ReadFrom(reader);
}
foreach (JProperty target in deps["targets"])
{
var targetLibrary = target.Value.Children<JProperty>().FirstOrDefault();
if (targetLibrary == null)
{
continue;
}
targetLibrary.Remove();
}
var library = deps["libraries"].Children<JProperty>().First();
library.Remove();
using (var file = File.CreateText(depsFile))
using (var writer = new JsonTextWriter(file) { Formatting = Formatting.Indented })
{
deps.WriteTo(writer);
}
}
}
}

Просмотреть файл

@ -0,0 +1,64 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.IO;
using System.Linq;
using NuGet.Frameworks;
using NuGet.Packaging;
using NuGet.Packaging.Core;
using NuGet.Versioning;
using Microsoft.Build.Framework;
using RepoTasks.ProjectModel;
namespace RepoTasks.Utilities
{
internal abstract class ArtifactInfo
{
public static ArtifactInfo Parse(ITaskItem item)
{
ArtifactInfo info;
switch (item.GetMetadata("ArtifactType").ToLowerInvariant())
{
case "nugetpackage":
info = new Package { PackageInfo = GetPackageInfo(item) };
break;
case "nugetsymbolspackage":
info = new Package { PackageInfo = GetPackageInfo(item), IsSymbolsArtifact = true };
break;
default:
throw new InvalidDataException($"Unrecognized artifact type: {item.GetMetadata("ArtifactType")} for artifact {item.ItemSpec}");
}
info.RepositoryRoot = item.GetMetadata("RepositoryRoot")?.TrimEnd(new [] { '\\', '/' });
if (!string.IsNullOrEmpty(info.RepositoryRoot))
{
info.RepoName = Path.GetFileName(info.RepositoryRoot);
}
return info;
}
public string RepositoryRoot { get; private set; }
public string RepoName { get; private set; }
public class Package : ArtifactInfo
{
public PackageInfo PackageInfo { get; set; }
public bool IsSymbolsArtifact { get; set; }
}
private static PackageInfo GetPackageInfo(ITaskItem item)
{
return new PackageInfo(
item.GetMetadata("PackageId"),
NuGetVersion.Parse(item.GetMetadata("Version")),
string.IsNullOrEmpty(item.GetMetadata("TargetFramework"))
? MSBuildListSplitter.SplitItemList(item.GetMetadata("TargetFramework")).Select(s => new PackageDependencyGroup(NuGetFramework.Parse(s), Array.Empty<PackageDependency>())).ToArray()
: new [] { new PackageDependencyGroup(NuGetFramework.Parse(item.GetMetadata("TargetFramework")), Array.Empty<PackageDependency>()) },
Path.GetDirectoryName(item.ItemSpec),
item.GetMetadata("PackageType"));
}
}
}

Просмотреть файл

@ -0,0 +1,32 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace RepoTasks.Utilities
{
public static class KoreBuildErrors
{
public const string Prefix = "KRB";
// Typically used in repos in Directory.Build.targets
public const int PackagesHaveNotYetBeenPinned = 1001;
// Warnings
public const int DotNetAssetVersionIsFloating = 2000;
public const int RepoVersionDoesNotMatchProjectVersion = 2001;
public const int RepoPackageVersionDoesNotMatchProjectPackageVersion = 2002;
public const int DuplicatePackageReference = 2003;
public const int MultipleExternalDependencyVersions = 2004;
// NuGet errors
public const int InvalidNuspecFile = 4001;
public const int PackageReferenceHasVersion = 4002;
public const int DotNetCliReferenceReferenceHasVersion = 4003;
public const int PackageVersionNotFoundInLineup = 4004;
public const int UndefinedExternalDependency = 4005;
public const int EmptyPackageReferenceVersion = 4006;
// Other unknown errors
public const int PolicyFailedToApply = 5000;
public const int UnknownPolicyType = 5001;
}
}

Просмотреть файл

@ -0,0 +1,26 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.Build.Utilities;
namespace RepoTasks.Utilities
{
public static class LoggingExtensions
{
public static void LogKoreBuildError(this TaskLoggingHelper logger, int code, string message, params object[] messageArgs)
=> LogKoreBuildError(logger, null, code, message, messageArgs: messageArgs);
public static void LogKoreBuildError(this TaskLoggingHelper logger, string filename, int code, string message, params object[] messageArgs)
{
logger.LogError(null, KoreBuildErrors.Prefix + code, null, filename, 0, 0, 0, 0, message, messageArgs: messageArgs);
}
public static void LogKoreBuildWarning(this TaskLoggingHelper logger, int code, string message, params object[] messageArgs)
=> LogKoreBuildWarning(logger, null, code, message, messageArgs: messageArgs);
public static void LogKoreBuildWarning(this TaskLoggingHelper logger, string filename, int code, string message, params object[] messageArgs)
{
logger.LogWarning(null, KoreBuildErrors.Prefix + code, null, filename, 0, 0, 0, 0, message, messageArgs: messageArgs);
}
}
}

Просмотреть файл

@ -0,0 +1,45 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
namespace RepoTasks.Utilities
{
internal static class MSBuildListSplitter
{
private static readonly char[] SemiColon = { ';' };
public static IEnumerable<string> SplitItemList(string value)
{
return string.IsNullOrEmpty(value)
? Enumerable.Empty<string>()
: value.Split(SemiColon, StringSplitOptions.RemoveEmptyEntries);
}
public static Dictionary<string, string> GetNamedProperties(string input)
{
var values = new Dictionary<string, string>();
if (string.IsNullOrEmpty(input))
{
return values;
}
foreach (var item in input.Split(SemiColon, StringSplitOptions.RemoveEmptyEntries))
{
var splitIdx = item.IndexOf('=');
if (splitIdx <= 0)
{
continue;
}
var key = item.Substring(0, splitIdx).Trim();
var value = item.Substring(splitIdx + 1);
values[key] = value;
}
return values;
}
}
}

Просмотреть файл

@ -2,7 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace RepoTasks.ProjectModel
namespace RepoTasks.Utilities
{
public enum PackageCategory
{

Просмотреть файл

@ -7,7 +7,7 @@ using System.IO;
using System.Linq;
using Microsoft.Build.Framework;
namespace RepoTasks.ProjectModel
namespace RepoTasks.Utilities
{
public class PackageCollection
{

Просмотреть файл

@ -0,0 +1,49 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using NuGet.Versioning;
namespace RepoTasks.Utilities
{
public class VersionUtilities
{
public static string GetTimestampFreeVersion(string packageVersion)
{
var version = new NuGetVersion(packageVersion);
var updatedVersion = new NuGetVersion(version.Version, GetTimestampFreeReleaseLabel(version.Release));
return updatedVersion.ToNormalizedString();
}
public static string GetTimestampFreeReleaseLabel(string releaseLabel)
{
if (releaseLabel.StartsWith("rtm-", StringComparison.OrdinalIgnoreCase))
{
// E.g. change version 2.5.0-rtm-123123 to 2.5.0.
releaseLabel = string.Empty;
}
else
{
var timeStampFreeVersion = Environment.GetEnvironmentVariable("TIMESTAMP_FREE_VERSION");
if (string.IsNullOrEmpty(timeStampFreeVersion))
{
timeStampFreeVersion = "final";
}
if (!timeStampFreeVersion.StartsWith("-"))
{
timeStampFreeVersion = "-" + timeStampFreeVersion;
}
// E.g. change version 2.5.0-rc2-123123 to 2.5.0-rc2-final.
var index = releaseLabel.LastIndexOf('-');
if (index != -1)
{
releaseLabel = releaseLabel.Substring(0, index) + timeStampFreeVersion;
}
}
return releaseLabel;
}
}
}

Просмотреть файл

@ -0,0 +1,51 @@
#
# Copyright (c) .NET Foundation. All rights reserved.
# Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#
# Dockerfile that creates a container suitable to build dotnet-cli
FROM debian:jessie
# Misc Dependencies for build
RUN apt-get update && \
apt-get -qqy install \
curl \
unzip \
gettext \
sudo \
libunwind8 \
libkrb5-3 \
libicu52 \
liblttng-ust0 \
libssl1.0.0 \
zlib1g \
libuuid1 \
debhelper \
build-essential \
devscripts \
git \
cmake \
clang-3.5 \
wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Use clang as c++ compiler
RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-3.5 100
RUN update-alternatives --set c++ /usr/bin/clang++-3.5
# Setup User to match Host User, and give superuser permissions
ARG USER_ID=0
RUN useradd -m code_executor -u ${USER_ID} -g sudo
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# With the User Change, we need to change permissions on these directories
RUN chmod -R a+rwx /usr/local
RUN chmod -R a+rwx /home
RUN chmod -R 755 /usr/lib/sudo
# Set user to the one we just created
USER ${USER_ID}
# Set working directory
WORKDIR /opt/code

Просмотреть файл

@ -0,0 +1,27 @@
#
# Copyright (c) .NET Foundation. All rights reserved.
# Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#
# Dockerfile that creates a container suitable to build dotnet-cli
FROM microsoft/dotnet-buildtools-prereqs:rhel-7-rpmpkg-c982313-20174116044113
# Install from sudo main package TODO This package needs to be mirrored
RUN yum install -y https://www.sudo.ws/sudo/dist/packages/RHEL/7/sudo-1.8.20-3.el7.x86_64.rpm \
&& yum clean all
# Setup User to match Host User, and give superuser permissions
ARG USER_ID=0
RUN useradd -m code_executor -u ${USER_ID} -g root
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# With the User Change, we need to change permssions on these directories
RUN chmod -R a+rwx /usr/local
RUN chmod -R a+rwx /home
RUN chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
# Set user to the one we just created
USER ${USER_ID}
# Set working directory
WORKDIR /opt/code

Просмотреть файл

@ -0,0 +1,52 @@
#
# Copyright (c) .NET Foundation. All rights reserved.
# Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#
# Dockerfile that creates a container suitable to build dotnet-cli
FROM ubuntu:14.04
# Misc Dependencies for build
RUN apt-get update && \
apt-get -qqy install \
curl \
unzip \
gettext \
sudo \
libunwind8 \
libkrb5-3 \
libicu52 \
liblttng-ust0 \
libssl1.0.0 \
zlib1g \
libuuid1 \
debhelper \
build-essential \
devscripts \
git \
cmake \
clang-3.5 \
lldb-3.6 \
wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Use clang as c++ compiler
RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-3.5 100
RUN update-alternatives --set c++ /usr/bin/clang++-3.5
# Setup User to match Host User, and give superuser permissions
ARG USER_ID=0
RUN useradd -m code_executor -u ${USER_ID} -g sudo
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# With the User Change, we need to change permissions on these directories
RUN chmod -R a+rwx /usr/local
RUN chmod -R a+rwx /home
RUN chmod -R 755 /usr/lib/sudo
# Set user to the one we just created
USER ${USER_ID}
# Set working directory
WORKDIR /opt/code

Просмотреть файл

@ -0,0 +1,48 @@
#
# Copyright (c) .NET Foundation. All rights reserved.
# Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#
FROM ubuntu:16.04
# Install the base toolchain we need to build anything (clang, cmake, make and the like)
# this does not include libraries that we need to compile different projects, we'd like
# them in a different layer.
RUN apt-get update && \
apt-get install -y cmake \
make \
llvm-3.5 \
clang-3.5 \
git \
curl \
tar \
sudo \
debhelper \
build-essential \
devscripts \
libunwind8 \
libkrb5-3 \
libicu55 \
liblttng-ust0 \
libssl1.0.0 \
zlib1g \
libuuid1 \
liblldb-3.6 \
wget && \
apt-get clean
# Setup User to match Host User, and give superuser permissions
ARG USER_ID=0
RUN useradd -m code_executor -u ${USER_ID} -g sudo
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# With the User Change, we need to change permissions on these directories
RUN chmod -R a+rwx /usr/local
RUN chmod -R a+rwx /home
RUN chmod -R 755 /usr/lib/sudo
# Set user to the one we just created
USER ${USER_ID}
# Set working directory
WORKDIR /opt/code

Просмотреть файл

@ -0,0 +1,52 @@
#
# Copyright (c) .NET Foundation. All rights reserved.
# Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#
# Dockerfile that creates a container suitable to build dotnet-cli
FROM ubuntu:16.10
# Misc Dependencies for build
RUN apt-get update && \
apt-get -qqy install \
curl \
unzip \
gettext \
sudo \
libunwind8 \
libkrb5-3 \
libicu57 \
liblttng-ust0 \
libssl1.0.0 \
zlib1g \
libuuid1 \
liblldb-3.5 \
debhelper \
build-essential \
devscripts \
git \
cmake \
clang-3.5 \
wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Use clang as c++ compiler
RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-3.5 100
RUN update-alternatives --set c++ /usr/bin/clang++-3.5
# Setup User to match Host User, and give superuser permissions
ARG USER_ID=0
RUN useradd -m code_executor -u ${USER_ID} -g sudo
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# With the User Change, we need to change permissions on these directories
RUN chmod -R a+rwx /usr/local
RUN chmod -R a+rwx /home
RUN chmod -R 755 /usr/lib/sudo
# Set user to the one we just created
USER ${USER_ID}
# Set working directory
WORKDIR /opt/code

Просмотреть файл

@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp1.0</TargetFramework>
<RestoreSources>$(RestoreSources);https://dotnet.myget.org/F/cli-deps/api/v3/index.json</RestoreSources>
</PropertyGroup>
<ItemGroup>
<DotNetCliToolReference Include="dotnet-deb-tool" Version="2.0.0" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,2 @@
* DATE MAINTAINER_NAME <MAINTAINER_EMAIL> - PACKAGE_VERSION-PACKAGE_REVISION
-

Просмотреть файл

@ -0,0 +1,35 @@
{
"maintainer_name": "Microsoft",
"maintainer_email": "nugetaspnet@microsoft.com",
"package_name": "dotnet-hosting",
"install_root": "/usr/share/dotnet",
"short_description": "Microsoft .NET Core DEB_VERSION Linux Server Hosting",
"long_description": "Microsoft .NET Core Linux Server Hosting enables hosting of ASP.NET Core applications and contains the ASP.NET Core Runtime Package Store and .NET Core Runtime. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/aspnet/home). We happily accept issues and PRs.",
"homepage": "https://www.asp.net/",
"release":{
"package_version":"0.0.0.0",
"package_revision":"1",
"urgency" : "low",
"changelog_message" : ""
},
"control": {
"priority":"standard",
"section":"devel",
"architecture":"any"
},
"copyright": "Microsoft",
"license": {
"type": "Apache-2.0",
"full_text": "Copyright (c) .NET Foundation. All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthese files except in compliance with the License. You may obtain a copy of the\nLicense at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed\nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License."
},
"debian_dependencies": {
"dotnet-runtime-DOTNET_VERSION": {},
"aspnetcore-store-DEB_VERSION": {}
}
}

Просмотреть файл

@ -0,0 +1,34 @@
{
"maintainer_name": "Microsoft",
"maintainer_email": "nugetaspnet@microsoft.com",
"package_name": "aspnetcore-store",
"install_root": "/usr/share/dotnet",
"short_description": "Microsoft ASP.NET Core DEB_VERSION Runtime Package Store",
"long_description": "Runtime package store for Microsoft ASP.NET Core. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/aspnet/home). We happily accept issues and PRs.",
"homepage": "https://www.asp.net/",
"release":{
"package_version":"0.0.0.0",
"package_revision":"1",
"urgency" : "low",
"changelog_message" : ""
},
"control": {
"priority":"standard",
"section":"devel",
"architecture":"any"
},
"copyright": "Microsoft",
"license": {
"type": "Apache-2.0",
"full_text": "Copyright (c) .NET Foundation. All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthese files except in compliance with the License. You may obtain a copy of the\nLicense at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed\nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License."
},
"debian_dependencies": {
"aspnetcore-store-2.0.0": {}
}
}

Просмотреть файл

@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="$(DotNetRestoreSourcePropsPath)" Condition="'$(DotNetRestoreSourcePropsPath)' != ''"/>
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<EnableApiCheck>false</EnableApiCheck>
<DotnetCliToolTargetFramework>netcoreapp2.0</DotnetCliToolTargetFramework>
<RestoreSources>$(DotNetRestoreSources)</RestoreSources>
<RestoreSources>$(RestoreSources);https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true' AND '$(AspNetUniverseBuildOffline)' != 'true' ">
$(RestoreSources);
https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json;
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true'">
$(RestoreSources);
https://api.nuget.org/v3/index.json;
</RestoreSources>
</PropertyGroup>
</Project>

Просмотреть файл

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<OutputType>Exe</OutputType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="$(HostingStartupPackageName)" Version="$(HostingStartupPackageVersion)" PrivateAssets="None" />
</ItemGroup>
<Target Name="CollectDeps">
<PropertyGroup>
<DepsRuntimeFrameworkVersion Condition="'$(DepsRuntimeFrameworkVersion)' == ''">$(RuntimeFrameworkVersion)</DepsRuntimeFrameworkVersion>
<DestinationDepsFile>$(DepsOutputPath)\$(HostingStartupPackageName)\shared\Microsoft.NETCore.App\$(DepsRuntimeFrameworkVersion)\$(HostingStartupPackageName).deps.json</DestinationDepsFile>
</PropertyGroup>
<Copy SourceFiles="$(ProjectDepsFilePath)" DestinationFiles="$(DestinationDepsFile)" />
</Target>
</Project>

Просмотреть файл

@ -0,0 +1,7 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
public class Program
{
public static void Main() { }
}

Просмотреть файл

@ -0,0 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="$(DotNetRestoreSourcesPropsPath)" Condition="'$(DotNetRestoreSourcesPropsPath)' != ''" />
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<RestoreSources>$(DotNetRestoreSources)</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true' AND '$(AspNetUniverseBuildOffline)' != 'true' ">
$(RestoreSources);
https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json;
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true'">
$(RestoreSources);
https://api.nuget.org/v3/index.json;
</RestoreSources>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="RS.References" Version="$(PackageVersion)" />
</ItemGroup>
<Target Name="GetPackageDefinitions" Returns="@(_PackageDefinitions)">
<ItemGroup>
<ProjectAssetsJson Include="$(MSBuildThisFileDirectory)**\project.assets.json" />
</ItemGroup>
<ResolvePackageDependencies ProjectPath="$(MSBuildThisFileFullPath)" ProjectAssetsFile="@(ProjectAssetsJson)">
<Output TaskParameter="PackageDefinitions" ItemName="_PackageDefinitions" />
</ResolvePackageDependencies>
</Target>
</Project>

Просмотреть файл

@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="$(DotNetRestoreSourcePropsPath)" Condition="'$(DotNetRestoreSourcePropsPath)' != ''"/>
<PropertyGroup>
<RestoreSources>$(DotNetRestoreSources)</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true' AND '$(AspNetUniverseBuildOffline)' != 'true' ">
$(RestoreSources);
https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json;
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true'">
$(RestoreSources);
https://api.nuget.org/v3/index.json;
</RestoreSources>
<TargetFramework>netcoreapp2.0</TargetFramework>
<IncludeBuildOutput>false</IncludeBuildOutput>
<IncludeSymbols>false</IncludeSymbols>
<EnableApiCheck>false</EnableApiCheck>
</PropertyGroup>
</Project>

1
modules/Templating Submodule

@ -0,0 +1 @@
Subproject commit aee0d26d67279b33ffa974721c50b4499519133d

Просмотреть файл

@ -0,0 +1,4 @@
<Project>
<Import Project="..\version.props" />
<Import Project="..\build\common.props" />
</Project>

Просмотреть файл

@ -0,0 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="$(DotNetRestoreSourcePropsPath)" Condition="'$(DotNetRestoreSourcePropsPath)' != ''"/>
<PropertyGroup>
<RestoreSources>$(DotNetRestoreSources)</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true' AND '$(AspNetUniverseBuildOffline)' != 'true' ">
$(RestoreSources);
https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json;
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
</RestoreSources>
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true'">
$(RestoreSources);
https://api.nuget.org/v3/index.json;
</RestoreSources>
<IncludeBuildOutput>false</IncludeBuildOutput>
<IncludeSymbols>false</IncludeSymbols>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PackageTags>aspnetcore</PackageTags>
<Description>Microsoft.AspNetCore.All</Description>
<EnableApiCheck>false</EnableApiCheck>
<RuntimeFrameworkVersion>$(MicrosoftNETCoreApp20PackageVersion)</RuntimeFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<Content Include="build\**\*.xml" PackagePath="%(Identity)" />
<Content Include="build\**\*.targets" PackagePath="%(Identity)" />
<Content Include="lib\$(TargetFramework)\_._" PackagePath="%(Identity)" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,29 @@
<Project>
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest Condition="'$(PublishWithAspNetCoreTargetManifest)'=='' and '$(SelfContained)'=='false' and '$(PublishableProject)'=='true'">true</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
<!--
******************************************************************************
Target: PublishWithAspNetCoreTargetManifest
Error if PublishWithAspNetCoreTargetManifest is set to true for standalone app
******************************************************************************
-->
<Target
Name="PublishWithAspNetCoreTargetManifest"
AfterTargets="PrepareForPublish"
Condition="'$(PublishWithAspNetCoreTargetManifest)'=='true'" >
<Error
Text="PublishWithAspNetCoreTargetManifest cannot be set to true for self contained apps."
Condition="'$(SelfContained)'=='true'" />
<ItemGroup>
<AspNetCoreTargetManifestFiles Include="$(MSBuildThisFileDirectory)aspnetcore-store-*.xml"/>
</ItemGroup>
<PropertyGroup>
<TargetManifestFiles>$(TargetManifestFiles);@(AspNetCoreTargetManifestFiles)</TargetManifestFiles>
</PropertyGroup>
</Target>
</Project>

Просмотреть файл

@ -0,0 +1,3 @@
<StoreArtifacts>
<Package Id="runtime.win-arm64.runtime.native.system.data.sqlclient.sni" Version="4.4.0" />
</StoreArtifacts>

Просмотреть файл

@ -0,0 +1,171 @@
<StoreArtifacts>
<Package Id="libuv" Version ="1.10.0"/>
<Package Id="microsoft.applicationinsights" Version ="2.4.0"/>
<Package Id="microsoft.applicationinsights.aspnetcore" Version ="2.1.1"/>
<Package Id="microsoft.applicationinsights.dependencycollector" Version ="2.4.1"/>
<Package Id="microsoft.aspnetcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.antiforgery" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.applicationinsights.hostingstartup" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.cookies" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.facebook" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.google" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.jwtbearer" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.microsoftaccount" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.oauth" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.openidconnect" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.twitter" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authorization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authorization.policy" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.azureappservices.hostingstartup" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.azureappservicesintegration" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cookiepolicy" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cors" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cryptography.internal" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cryptography.keyderivation" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.azurestorage" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting.server.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.html.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.features" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.httpoverrides" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.identity" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.identity.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.jsonpatch" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.localization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.localization.routing" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.middlewareanalysis" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.apiexplorer" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.cors" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.dataannotations" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.formatters.json" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.formatters.xml" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.localization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razor" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razor.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razorpages" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.taghelpers" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.viewfeatures" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.nodeservices" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.owin" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor.language" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor.runtime" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecaching" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecaching.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecompression" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.rewrite" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.routing" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.routing.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.httpsys" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.iisintegration" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.https" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.transport.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.transport.libuv" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.session" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.spaservices" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.staticfiles" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.websockets" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.webutilities" Version ="2.0.0"/>
<Package Id="microsoft.azure.keyvault" Version ="2.3.2"/>
<Package Id="microsoft.azure.keyvault.webkey" Version ="2.0.7"/>
<Package Id="microsoft.codeanalysis.common" Version ="2.3.1"/>
<Package Id="microsoft.codeanalysis.csharp" Version ="2.3.1"/>
<Package Id="microsoft.codeanalysis.razor" Version ="2.0.0"/>
<Package Id="microsoft.data.edm" Version ="5.8.2"/>
<Package Id="microsoft.data.odata" Version ="5.8.2"/>
<Package Id="microsoft.data.sqlite.core" Version ="2.0.0"/>
<Package Id="microsoft.dotnet.platformabstractions" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.design" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.inmemory" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.relational" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.sqlite.core" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.sqlserver" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.memory" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.redis" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.sqlserver" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.azurekeyvault" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.binder" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.commandline" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.environmentvariables" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.fileextensions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.ini" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.json" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.usersecrets" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.xml" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencyinjection" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencyinjection.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencymodel" Version ="2.0.0"/>
<Package Id="microsoft.extensions.diagnosticadapter" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.composite" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.embedded" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.physical" Version ="2.0.0"/>
<Package Id="microsoft.extensions.filesystemglobbing" Version ="2.0.0"/>
<Package Id="microsoft.extensions.hosting.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.identity.core" Version ="2.0.0"/>
<Package Id="microsoft.extensions.identity.stores" Version ="2.0.0"/>
<Package Id="microsoft.extensions.localization" Version ="2.0.0"/>
<Package Id="microsoft.extensions.localization.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.azureappservices" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.configuration" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.console" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.debug" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.eventsource" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.tracesource" Version ="2.0.0"/>
<Package Id="microsoft.extensions.objectpool" Version ="2.0.0"/>
<Package Id="microsoft.extensions.options" Version ="2.0.0"/>
<Package Id="microsoft.extensions.options.configurationextensions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.platformabstractions" Version ="1.1.0"/>
<Package Id="microsoft.extensions.primitives" Version ="2.0.0"/>
<Package Id="microsoft.extensions.webencoders" Version ="2.0.0"/>
<Package Id="microsoft.identitymodel.clients.activedirectory" Version ="3.14.1"/>
<Package Id="microsoft.identitymodel.logging" Version ="1.1.4"/>
<Package Id="microsoft.identitymodel.protocols" Version ="2.1.4"/>
<Package Id="microsoft.identitymodel.protocols.openidconnect" Version ="2.1.4"/>
<Package Id="microsoft.identitymodel.tokens" Version ="5.1.4"/>
<Package Id="microsoft.net.http.headers" Version ="2.0.0"/>
<Package Id="microsoft.rest.clientruntime" Version ="2.3.8"/>
<Package Id="microsoft.rest.clientruntime.azure" Version ="3.3.7"/>
<Package Id="microsoft.visualstudio.web.browserlink" Version ="2.0.0"/>
<Package Id="newtonsoft.json" Version ="10.0.1"/>
<Package Id="newtonsoft.json.bson" Version ="1.0.1"/>
<Package Id="remotion.linq" Version ="2.1.1"/>
<Package Id="sqlitepclraw.bundle_green" Version ="1.1.7"/>
<Package Id="sqlitepclraw.core" Version ="1.1.7"/>
<Package Id="sqlitepclraw.lib.e_sqlite3.linux" Version ="1.1.7"/>
<Package Id="sqlitepclraw.provider.e_sqlite3.netstandard11" Version ="1.1.7"/>
<Package Id="stackexchange.redis.strongname" Version ="1.2.4"/>
<Package Id="system.data.sqlclient" Version ="4.4.0"/>
<Package Id="system.identitymodel.tokens.jwt" Version ="5.1.4"/>
<Package Id="system.interactive.async" Version ="3.1.1"/>
<Package Id="system.runtime.compilerservices.unsafe" Version ="4.4.0"/>
<Package Id="system.security.cryptography.xml" Version ="4.4.0"/>
<Package Id="system.spatial" Version ="5.8.2"/>
<Package Id="system.text.encoding.codepages" Version ="4.4.0"/>
<Package Id="system.text.encodings.web" Version ="4.4.0"/>
<Package Id="windowsazure.storage" Version ="8.1.4"/>
</StoreArtifacts>

Просмотреть файл

@ -0,0 +1,171 @@
<StoreArtifacts>
<Package Id="libuv" Version ="1.10.0"/>
<Package Id="microsoft.applicationinsights" Version ="2.4.0"/>
<Package Id="microsoft.applicationinsights.aspnetcore" Version ="2.1.1"/>
<Package Id="microsoft.applicationinsights.dependencycollector" Version ="2.4.1"/>
<Package Id="microsoft.aspnetcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.antiforgery" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.applicationinsights.hostingstartup" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.cookies" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.facebook" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.google" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.jwtbearer" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.microsoftaccount" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.oauth" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.openidconnect" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.twitter" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authorization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authorization.policy" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.azureappservices.hostingstartup" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.azureappservicesintegration" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cookiepolicy" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cors" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cryptography.internal" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cryptography.keyderivation" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.azurestorage" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting.server.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.html.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.features" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.httpoverrides" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.identity" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.identity.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.jsonpatch" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.localization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.localization.routing" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.middlewareanalysis" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.apiexplorer" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.cors" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.dataannotations" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.formatters.json" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.formatters.xml" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.localization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razor" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razor.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razorpages" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.taghelpers" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.viewfeatures" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.nodeservices" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.owin" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor.language" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor.runtime" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecaching" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecaching.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecompression" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.rewrite" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.routing" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.routing.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.httpsys" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.iisintegration" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.https" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.transport.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.transport.libuv" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.session" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.spaservices" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.staticfiles" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.websockets" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.webutilities" Version ="2.0.0"/>
<Package Id="microsoft.azure.keyvault" Version ="2.3.2"/>
<Package Id="microsoft.azure.keyvault.webkey" Version ="2.0.7"/>
<Package Id="microsoft.codeanalysis.common" Version ="2.3.1"/>
<Package Id="microsoft.codeanalysis.csharp" Version ="2.3.1"/>
<Package Id="microsoft.codeanalysis.razor" Version ="2.0.0"/>
<Package Id="microsoft.data.edm" Version ="5.8.2"/>
<Package Id="microsoft.data.odata" Version ="5.8.2"/>
<Package Id="microsoft.data.sqlite.core" Version ="2.0.0"/>
<Package Id="microsoft.dotnet.platformabstractions" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.design" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.inmemory" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.relational" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.sqlite.core" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.sqlserver" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.memory" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.redis" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.sqlserver" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.azurekeyvault" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.binder" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.commandline" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.environmentvariables" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.fileextensions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.ini" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.json" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.usersecrets" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.xml" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencyinjection" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencyinjection.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencymodel" Version ="2.0.0"/>
<Package Id="microsoft.extensions.diagnosticadapter" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.composite" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.embedded" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.physical" Version ="2.0.0"/>
<Package Id="microsoft.extensions.filesystemglobbing" Version ="2.0.0"/>
<Package Id="microsoft.extensions.hosting.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.identity.core" Version ="2.0.0"/>
<Package Id="microsoft.extensions.identity.stores" Version ="2.0.0"/>
<Package Id="microsoft.extensions.localization" Version ="2.0.0"/>
<Package Id="microsoft.extensions.localization.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.azureappservices" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.configuration" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.console" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.debug" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.eventsource" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.tracesource" Version ="2.0.0"/>
<Package Id="microsoft.extensions.objectpool" Version ="2.0.0"/>
<Package Id="microsoft.extensions.options" Version ="2.0.0"/>
<Package Id="microsoft.extensions.options.configurationextensions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.platformabstractions" Version ="1.1.0"/>
<Package Id="microsoft.extensions.primitives" Version ="2.0.0"/>
<Package Id="microsoft.extensions.webencoders" Version ="2.0.0"/>
<Package Id="microsoft.identitymodel.clients.activedirectory" Version ="3.14.1"/>
<Package Id="microsoft.identitymodel.logging" Version ="1.1.4"/>
<Package Id="microsoft.identitymodel.protocols" Version ="2.1.4"/>
<Package Id="microsoft.identitymodel.protocols.openidconnect" Version ="2.1.4"/>
<Package Id="microsoft.identitymodel.tokens" Version ="5.1.4"/>
<Package Id="microsoft.net.http.headers" Version ="2.0.0"/>
<Package Id="microsoft.rest.clientruntime" Version ="2.3.8"/>
<Package Id="microsoft.rest.clientruntime.azure" Version ="3.3.7"/>
<Package Id="microsoft.visualstudio.web.browserlink" Version ="2.0.0"/>
<Package Id="newtonsoft.json" Version ="10.0.1"/>
<Package Id="newtonsoft.json.bson" Version ="1.0.1"/>
<Package Id="remotion.linq" Version ="2.1.1"/>
<Package Id="sqlitepclraw.bundle_green" Version ="1.1.7"/>
<Package Id="sqlitepclraw.core" Version ="1.1.7"/>
<Package Id="sqlitepclraw.lib.e_sqlite3.osx" Version ="1.1.7"/>
<Package Id="sqlitepclraw.provider.e_sqlite3.netstandard11" Version ="1.1.7"/>
<Package Id="stackexchange.redis.strongname" Version ="1.2.4"/>
<Package Id="system.data.sqlclient" Version ="4.4.0"/>
<Package Id="system.identitymodel.tokens.jwt" Version ="5.1.4"/>
<Package Id="system.interactive.async" Version ="3.1.1"/>
<Package Id="system.runtime.compilerservices.unsafe" Version ="4.4.0"/>
<Package Id="system.security.cryptography.xml" Version ="4.4.0"/>
<Package Id="system.spatial" Version ="5.8.2"/>
<Package Id="system.text.encoding.codepages" Version ="4.4.0"/>
<Package Id="system.text.encodings.web" Version ="4.4.0"/>
<Package Id="windowsazure.storage" Version ="8.1.4"/>
</StoreArtifacts>

Просмотреть файл

@ -0,0 +1,172 @@
<StoreArtifacts>
<Package Id="libuv" Version ="1.10.0"/>
<Package Id="microsoft.applicationinsights" Version ="2.4.0"/>
<Package Id="microsoft.applicationinsights.aspnetcore" Version ="2.1.1"/>
<Package Id="microsoft.applicationinsights.dependencycollector" Version ="2.4.1"/>
<Package Id="microsoft.aspnetcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.antiforgery" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.applicationinsights.hostingstartup" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.cookies" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.facebook" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.google" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.jwtbearer" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.microsoftaccount" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.oauth" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.openidconnect" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.twitter" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authorization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authorization.policy" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.azureappservices.hostingstartup" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.azureappservicesintegration" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cookiepolicy" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cors" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cryptography.internal" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cryptography.keyderivation" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.azurestorage" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting.server.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.html.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.features" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.httpoverrides" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.identity" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.identity.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.jsonpatch" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.localization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.localization.routing" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.middlewareanalysis" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.apiexplorer" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.cors" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.dataannotations" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.formatters.json" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.formatters.xml" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.localization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razor" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razor.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razorpages" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.taghelpers" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.viewfeatures" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.nodeservices" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.owin" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor.language" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor.runtime" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecaching" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecaching.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecompression" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.rewrite" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.routing" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.routing.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.httpsys" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.iisintegration" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.https" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.transport.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.transport.libuv" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.session" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.spaservices" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.staticfiles" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.websockets" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.webutilities" Version ="2.0.0"/>
<Package Id="microsoft.azure.keyvault" Version ="2.3.2"/>
<Package Id="microsoft.azure.keyvault.webkey" Version ="2.0.7"/>
<Package Id="microsoft.codeanalysis.common" Version ="2.3.1"/>
<Package Id="microsoft.codeanalysis.csharp" Version ="2.3.1"/>
<Package Id="microsoft.codeanalysis.razor" Version ="2.0.0"/>
<Package Id="microsoft.data.edm" Version ="5.8.2"/>
<Package Id="microsoft.data.odata" Version ="5.8.2"/>
<Package Id="microsoft.data.sqlite.core" Version ="2.0.0"/>
<Package Id="microsoft.dotnet.platformabstractions" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.design" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.inmemory" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.relational" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.sqlite.core" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.sqlserver" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.memory" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.redis" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.sqlserver" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.azurekeyvault" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.binder" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.commandline" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.environmentvariables" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.fileextensions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.ini" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.json" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.usersecrets" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.xml" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencyinjection" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencyinjection.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencymodel" Version ="2.0.0"/>
<Package Id="microsoft.extensions.diagnosticadapter" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.composite" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.embedded" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.physical" Version ="2.0.0"/>
<Package Id="microsoft.extensions.filesystemglobbing" Version ="2.0.0"/>
<Package Id="microsoft.extensions.hosting.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.identity.core" Version ="2.0.0"/>
<Package Id="microsoft.extensions.identity.stores" Version ="2.0.0"/>
<Package Id="microsoft.extensions.localization" Version ="2.0.0"/>
<Package Id="microsoft.extensions.localization.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.azureappservices" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.configuration" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.console" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.debug" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.eventsource" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.tracesource" Version ="2.0.0"/>
<Package Id="microsoft.extensions.objectpool" Version ="2.0.0"/>
<Package Id="microsoft.extensions.options" Version ="2.0.0"/>
<Package Id="microsoft.extensions.options.configurationextensions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.platformabstractions" Version ="1.1.0"/>
<Package Id="microsoft.extensions.primitives" Version ="2.0.0"/>
<Package Id="microsoft.extensions.webencoders" Version ="2.0.0"/>
<Package Id="microsoft.identitymodel.clients.activedirectory" Version ="3.14.1"/>
<Package Id="microsoft.identitymodel.logging" Version ="1.1.4"/>
<Package Id="microsoft.identitymodel.protocols" Version ="2.1.4"/>
<Package Id="microsoft.identitymodel.protocols.openidconnect" Version ="2.1.4"/>
<Package Id="microsoft.identitymodel.tokens" Version ="5.1.4"/>
<Package Id="microsoft.net.http.headers" Version ="2.0.0"/>
<Package Id="microsoft.rest.clientruntime" Version ="2.3.8"/>
<Package Id="microsoft.rest.clientruntime.azure" Version ="3.3.7"/>
<Package Id="microsoft.visualstudio.web.browserlink" Version ="2.0.0"/>
<Package Id="newtonsoft.json" Version ="10.0.1"/>
<Package Id="newtonsoft.json.bson" Version ="1.0.1"/>
<Package Id="remotion.linq" Version ="2.1.1"/>
<Package Id="runtime.win-x64.runtime.native.system.data.sqlclient.sni" Version ="4.4.0"/>
<Package Id="sqlitepclraw.bundle_green" Version ="1.1.7"/>
<Package Id="sqlitepclraw.core" Version ="1.1.7"/>
<Package Id="sqlitepclraw.lib.e_sqlite3.v110_xp" Version ="1.1.7"/>
<Package Id="sqlitepclraw.provider.e_sqlite3.netstandard11" Version ="1.1.7"/>
<Package Id="stackexchange.redis.strongname" Version ="1.2.4"/>
<Package Id="system.data.sqlclient" Version ="4.4.0"/>
<Package Id="system.identitymodel.tokens.jwt" Version ="5.1.4"/>
<Package Id="system.interactive.async" Version ="3.1.1"/>
<Package Id="system.runtime.compilerservices.unsafe" Version ="4.4.0"/>
<Package Id="system.security.cryptography.xml" Version ="4.4.0"/>
<Package Id="system.spatial" Version ="5.8.2"/>
<Package Id="system.text.encoding.codepages" Version ="4.4.0"/>
<Package Id="system.text.encodings.web" Version ="4.4.0"/>
<Package Id="windowsazure.storage" Version ="8.1.4"/>
</StoreArtifacts>

Просмотреть файл

@ -0,0 +1,172 @@
<StoreArtifacts>
<Package Id="libuv" Version ="1.10.0"/>
<Package Id="microsoft.applicationinsights" Version ="2.4.0"/>
<Package Id="microsoft.applicationinsights.aspnetcore" Version ="2.1.1"/>
<Package Id="microsoft.applicationinsights.dependencycollector" Version ="2.4.1"/>
<Package Id="microsoft.aspnetcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.antiforgery" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.applicationinsights.hostingstartup" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.cookies" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.facebook" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.google" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.jwtbearer" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.microsoftaccount" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.oauth" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.openidconnect" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authentication.twitter" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authorization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.authorization.policy" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.azureappservices.hostingstartup" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.azureappservicesintegration" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cookiepolicy" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cors" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cryptography.internal" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.cryptography.keyderivation" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.azurestorage" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.dataprotection.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.diagnostics.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.hosting.server.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.html.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.http.features" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.httpoverrides" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.identity" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.identity.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.jsonpatch" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.localization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.localization.routing" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.middlewareanalysis" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.apiexplorer" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.cors" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.dataannotations" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.formatters.json" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.formatters.xml" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.localization" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razor" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razor.extensions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.razorpages" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.taghelpers" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.mvc.viewfeatures" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.nodeservices" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.owin" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor.language" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.razor.runtime" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecaching" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecaching.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.responsecompression" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.rewrite" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.routing" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.routing.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.httpsys" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.iisintegration" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.core" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.https" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.transport.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.server.kestrel.transport.libuv" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.session" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.spaservices" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.staticfiles" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.websockets" Version ="2.0.0"/>
<Package Id="microsoft.aspnetcore.webutilities" Version ="2.0.0"/>
<Package Id="microsoft.azure.keyvault" Version ="2.3.2"/>
<Package Id="microsoft.azure.keyvault.webkey" Version ="2.0.7"/>
<Package Id="microsoft.codeanalysis.common" Version ="2.3.1"/>
<Package Id="microsoft.codeanalysis.csharp" Version ="2.3.1"/>
<Package Id="microsoft.codeanalysis.razor" Version ="2.0.0"/>
<Package Id="microsoft.data.edm" Version ="5.8.2"/>
<Package Id="microsoft.data.odata" Version ="5.8.2"/>
<Package Id="microsoft.data.sqlite.core" Version ="2.0.0"/>
<Package Id="microsoft.dotnet.platformabstractions" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.design" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.inmemory" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.relational" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.sqlite.core" Version ="2.0.0"/>
<Package Id="microsoft.entityframeworkcore.sqlserver" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.memory" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.redis" Version ="2.0.0"/>
<Package Id="microsoft.extensions.caching.sqlserver" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.azurekeyvault" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.binder" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.commandline" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.environmentvariables" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.fileextensions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.ini" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.json" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.usersecrets" Version ="2.0.0"/>
<Package Id="microsoft.extensions.configuration.xml" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencyinjection" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencyinjection.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.dependencymodel" Version ="2.0.0"/>
<Package Id="microsoft.extensions.diagnosticadapter" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.composite" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.embedded" Version ="2.0.0"/>
<Package Id="microsoft.extensions.fileproviders.physical" Version ="2.0.0"/>
<Package Id="microsoft.extensions.filesystemglobbing" Version ="2.0.0"/>
<Package Id="microsoft.extensions.hosting.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.identity.core" Version ="2.0.0"/>
<Package Id="microsoft.extensions.identity.stores" Version ="2.0.0"/>
<Package Id="microsoft.extensions.localization" Version ="2.0.0"/>
<Package Id="microsoft.extensions.localization.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.abstractions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.azureappservices" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.configuration" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.console" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.debug" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.eventsource" Version ="2.0.0"/>
<Package Id="microsoft.extensions.logging.tracesource" Version ="2.0.0"/>
<Package Id="microsoft.extensions.objectpool" Version ="2.0.0"/>
<Package Id="microsoft.extensions.options" Version ="2.0.0"/>
<Package Id="microsoft.extensions.options.configurationextensions" Version ="2.0.0"/>
<Package Id="microsoft.extensions.platformabstractions" Version ="1.1.0"/>
<Package Id="microsoft.extensions.primitives" Version ="2.0.0"/>
<Package Id="microsoft.extensions.webencoders" Version ="2.0.0"/>
<Package Id="microsoft.identitymodel.clients.activedirectory" Version ="3.14.1"/>
<Package Id="microsoft.identitymodel.logging" Version ="1.1.4"/>
<Package Id="microsoft.identitymodel.protocols" Version ="2.1.4"/>
<Package Id="microsoft.identitymodel.protocols.openidconnect" Version ="2.1.4"/>
<Package Id="microsoft.identitymodel.tokens" Version ="5.1.4"/>
<Package Id="microsoft.net.http.headers" Version ="2.0.0"/>
<Package Id="microsoft.rest.clientruntime" Version ="2.3.8"/>
<Package Id="microsoft.rest.clientruntime.azure" Version ="3.3.7"/>
<Package Id="microsoft.visualstudio.web.browserlink" Version ="2.0.0"/>
<Package Id="newtonsoft.json" Version ="10.0.1"/>
<Package Id="newtonsoft.json.bson" Version ="1.0.1"/>
<Package Id="remotion.linq" Version ="2.1.1"/>
<Package Id="runtime.win-x86.runtime.native.system.data.sqlclient.sni" Version ="4.4.0"/>
<Package Id="sqlitepclraw.bundle_green" Version ="1.1.7"/>
<Package Id="sqlitepclraw.core" Version ="1.1.7"/>
<Package Id="sqlitepclraw.lib.e_sqlite3.v110_xp" Version ="1.1.7"/>
<Package Id="sqlitepclraw.provider.e_sqlite3.netstandard11" Version ="1.1.7"/>
<Package Id="stackexchange.redis.strongname" Version ="1.2.4"/>
<Package Id="system.data.sqlclient" Version ="4.4.0"/>
<Package Id="system.identitymodel.tokens.jwt" Version ="5.1.4"/>
<Package Id="system.interactive.async" Version ="3.1.1"/>
<Package Id="system.runtime.compilerservices.unsafe" Version ="4.4.0"/>
<Package Id="system.security.cryptography.xml" Version ="4.4.0"/>
<Package Id="system.spatial" Version ="5.8.2"/>
<Package Id="system.text.encoding.codepages" Version ="4.4.0"/>
<Package Id="system.text.encodings.web" Version ="4.4.0"/>
<Package Id="windowsazure.storage" Version ="8.1.4"/>
</StoreArtifacts>

Просмотреть файл

@ -0,0 +1,3 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)..\PublishWithAspNetCoreTargetManifest.targets" />
</Project>

Просмотреть файл

Просмотреть файл

@ -2,6 +2,10 @@
<PropertyGroup>
<VersionPrefix>2.1.0</VersionPrefix>
<VersionSuffix>preview1</VersionSuffix>
<VersionSuffix Condition=" '$(VersionSuffix)' != '' AND '$(BuildNumber)' != '' ">$(VersionSuffix)-$(BuildNumber)</VersionSuffix>
<PackageVersion Condition="'$(IsFinalBuild)' == 'true' AND '$(VersionSuffix)' == 'rtm' ">$(VersionPrefix)</PackageVersion>
<PackageVersionNoTimestamp Condition="'$(VersionSuffix)' == 'rtm' ">$(VersionPrefix)</PackageVersionNoTimestamp>
<PackageVersion Condition="'$(IsFinalBuild)' == 'true' AND '$(VersionSuffix)' != 'rtm' ">$(VersionPrefix)-$(VersionSuffix)-final</PackageVersion>
<PackageVersionNoTimestamp Condition="'$(VersionSuffix)' != 'rtm' ">$(VersionPrefix)-$(VersionSuffix)-final</PackageVersionNoTimestamp>
<VersionSuffix Condition="'$(VersionSuffix)' != '' And '$(BuildNumber)' != ''">$(VersionSuffix)-$(BuildNumber)</VersionSuffix>
</PropertyGroup>
</Project>