Merge source code from aspnet/Universe into this repository
This commit is contained in:
commit
1b970fe272
|
|
@ -0,0 +1,225 @@
|
|||
trigger:
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
- release/*
|
||||
exclude:
|
||||
- release/2.0
|
||||
|
||||
phases:
|
||||
- phase: Windows
|
||||
queue:
|
||||
name: DotNetCore-Windows
|
||||
timeoutInMinutes: 120
|
||||
matrix:
|
||||
Release:
|
||||
BuildConfiguration: Release
|
||||
variables:
|
||||
CI: true
|
||||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
|
||||
|
||||
# This variable is required by MicroBuildSigningPlugin to determine permissions for codesigning.
|
||||
TeamName: AspNetCore
|
||||
|
||||
# SignType = { test, real }
|
||||
# This is prefixed underscore because variables automatically become environment variables (and therefore MSBuild properties),
|
||||
# and this one was causing issues in MSBuild projects which use the $(SignType) MSbuild prop.
|
||||
_SignType: real
|
||||
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
displayName: Install Node 10.x
|
||||
inputs:
|
||||
versionSpec: 10.x
|
||||
- task: MicroBuildSigningPlugin@1
|
||||
displayName: Install MicroBuild plugin
|
||||
condition: and(succeeded(), in(variables['_SignType'], 'test', 'real'))
|
||||
inputs:
|
||||
signType: $(_SignType)
|
||||
zipSources: false
|
||||
# TODO: configure build.cmd to build both x64 and x86 in one invocation
|
||||
- script: build.cmd -ci /p:SkipTests=true /p:Configuration=$(BuildConfiguration) /p:BuildNumber=$(Build.BuildNumber) /t:Build /t:BuildSharedFx /p:SharedFxRID=win-x64 /t:BuildFallbackArchive
|
||||
displayName: Build NuGet packages and win-x64 runtime
|
||||
- script: build.cmd -ci /p:SkipTests=true /p:Configuration=$(BuildConfiguration) /p:BuildNumber=$(Build.BuildNumber) /t:BuildSharedFx /p:SharedFxRID=win-x86
|
||||
displayName: Build win-x86 runtime
|
||||
- powershell: >
|
||||
src/Installers/Windows/clone_and_build_ancm.ps1
|
||||
-GitCredential '$(dn-bot-devdiv-build-rw-code-rw)'
|
||||
-Config $(BuildConfiguration)
|
||||
-BuildNumber $(Build.BuildNumber)
|
||||
-SignType $(_SignType)
|
||||
displayName: Build ANCM installers
|
||||
# TODO: configure harvesting to run as a part of build.cmd
|
||||
- powershell: >
|
||||
src/Installers/Windows/build.ps1
|
||||
-x64 artifacts/runtime/aspnetcore-runtime-internal-3.0.0-alpha1-$(Build.BuildNumber)-win-x64.zip
|
||||
-x86 artifacts/runtime/aspnetcore-runtime-internal-3.0.0-alpha1-$(Build.BuildNumber)-win-x86.zip
|
||||
-Config $(BuildConfiguration)
|
||||
-BuildNumber $(Build.BuildNumber)
|
||||
-SignType $(_SignType)
|
||||
displayName: Build Windows installers
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish test results
|
||||
condition: always()
|
||||
inputs:
|
||||
testRunner: vstest
|
||||
testResultsFiles: 'artifacts/logs/**/*.trx'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Upload artifacts
|
||||
condition: eq(variables['system.pullrequest.isfork'], false)
|
||||
inputs:
|
||||
pathtoPublish: ./artifacts/
|
||||
artifactName: artifacts-Windows-Release
|
||||
artifactType: Container
|
||||
# Detect OSS Components in use in the product. Only needs to run on one OS in the matrix.
|
||||
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
|
||||
displayName: 'Component Detection'
|
||||
inputs:
|
||||
# This funky GUID represents the product "ASP.NET and EF Core"
|
||||
governanceProduct: 'c641993b-8380-e811-80c3-0004ffb4789e'
|
||||
snapshotForceEnabled: true
|
||||
- task: MicroBuildCleanup@1
|
||||
displayName: Cleanup MicroBuild tasks
|
||||
condition: always()
|
||||
|
||||
- phase: macOS
|
||||
dependsOn: Windows
|
||||
queue:
|
||||
name: Hosted macOS Preview
|
||||
matrix:
|
||||
Release:
|
||||
BuildConfiguration: Release
|
||||
variables:
|
||||
CI: true
|
||||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
|
||||
steps:
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download artifacts
|
||||
inputs:
|
||||
artifactName: artifacts-Windows-Release
|
||||
downloadPath: $(Build.SourcesDirectory)/.deps
|
||||
itemPattern: '**/*.nupkg'
|
||||
# Workaround https://github.com/Microsoft/vsts-tasks/issues/6739
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy package assets to correct folder
|
||||
inputs:
|
||||
sourceFolder: $(Build.SourcesDirectory)/.deps/artifacts-Windows-Release
|
||||
targetFolder: $(Build.SourcesDirectory)/.deps
|
||||
- script: >
|
||||
./build.sh
|
||||
--ci
|
||||
/t:Prepare
|
||||
/t:Restore
|
||||
/t:GeneratePropsFiles
|
||||
/t:BuildSharedFx
|
||||
/p:SharedFxRID=osx-x64
|
||||
/p:BuildNumber=$(Build.BuildNumber)
|
||||
displayName: Build osx-x64 runtime
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish test results
|
||||
condition: always()
|
||||
inputs:
|
||||
testRunner: vstest
|
||||
testResultsFiles: 'artifacts/logs/**/*.trx'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Upload artifacts
|
||||
condition: eq(variables['system.pullrequest.isfork'], false)
|
||||
inputs:
|
||||
pathtoPublish: ./artifacts/
|
||||
artifactName: artifacts-macOS-Release
|
||||
artifactType: Container
|
||||
|
||||
- phase: Linux
|
||||
dependsOn:
|
||||
- Windows
|
||||
- macOS
|
||||
queue:
|
||||
name: DotNetCore-Linux
|
||||
matrix:
|
||||
Release:
|
||||
BuildConfiguration: Release
|
||||
variables:
|
||||
CI: true
|
||||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
|
||||
steps:
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download artifacts
|
||||
inputs:
|
||||
artifactName: artifacts-Windows-Release
|
||||
downloadPath: $(Build.SourcesDirectory)/.deps
|
||||
itemPattern: '**/*.nupkg'
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download Windows artifacts
|
||||
inputs:
|
||||
artifactName: artifacts-Windows-Release
|
||||
downloadPath: $(Build.SourcesDirectory)/.r
|
||||
itemPattern: '**/aspnetcore-runtime-*'
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download macOS artifacts
|
||||
inputs:
|
||||
artifactName: artifacts-macOS-Release
|
||||
downloadPath: $(Build.SourcesDirectory)/.r
|
||||
itemPattern: '**/aspnetcore-runtime-*'
|
||||
# Workaround https://github.com/Microsoft/vsts-tasks/issues/6739
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy package assets to correct folder
|
||||
inputs:
|
||||
sourceFolder: $(Build.SourcesDirectory)/.deps/artifacts-Windows-Release
|
||||
targetFolder: $(Build.SourcesDirectory)/.deps
|
||||
# TODO: Make the cumulative zips build in their own step
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy package assets to correct folder
|
||||
inputs:
|
||||
sourceFolder: $(Build.SourcesDirectory)/.r/artifacts-Windows-Release
|
||||
targetFolder: $(Build.SourcesDirectory)/artifacts/
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy package assets to correct folder
|
||||
inputs:
|
||||
sourceFolder: $(Build.SourcesDirectory)/.r/artifacts-macOS-Release
|
||||
targetFolder: $(Build.SourcesDirectory)/artifacts/
|
||||
- script: >
|
||||
./build.sh
|
||||
--ci
|
||||
/t:Prepare
|
||||
/t:Restore
|
||||
/t:GeneratePropsFiles
|
||||
/t:BuildSharedFx
|
||||
/p:SharedFxRID=linux-x64
|
||||
/p:BuildNumber=$(Build.BuildNumber)
|
||||
displayName: Build linux-x64 runtime
|
||||
- script: >
|
||||
./build.sh
|
||||
--ci
|
||||
/t:BuildSharedFx
|
||||
/p:SharedFxRID=linux-arm
|
||||
/p:BuildNumber=$(Build.BuildNumber)
|
||||
displayName: Build linux-arm runtime
|
||||
- script: >
|
||||
./dockerbuild.sh
|
||||
alpine
|
||||
/t:Prepare
|
||||
/t:GeneratePropsFiles
|
||||
/t:BuildSharedFx
|
||||
/p:SharedFxRID=linux-musl-x64
|
||||
/p:BuildNumber=$(Build.BuildNumber)
|
||||
displayName: Build linux-musl-x64 runtime
|
||||
# TODO: configure installers to run in one build.sh invocation
|
||||
- script: >
|
||||
./build.sh
|
||||
--ci
|
||||
/t:BuildInstallers
|
||||
/p:_SharedFxSourceDir=$(Build.SourcesDirectory)/artifacts/runtime/
|
||||
displayName: Build linux installers
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish test results
|
||||
condition: always()
|
||||
inputs:
|
||||
testRunner: vstest
|
||||
testResultsFiles: 'artifacts/logs/**/*.trx'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Upload artifacts
|
||||
condition: eq(variables['system.pullrequest.isfork'], false)
|
||||
inputs:
|
||||
pathtoPublish: ./artifacts/
|
||||
artifactName: artifacts-Linux-Release
|
||||
artifactType: Container
|
||||
|
|
@ -0,0 +1,134 @@
|
|||
trigger: none
|
||||
phases:
|
||||
- phase: Host_Windows
|
||||
queue:
|
||||
name: Hosted VS2017
|
||||
parallel: 8
|
||||
matrix:
|
||||
Portable_Node8:
|
||||
Test.RuntimeIdentifier: none
|
||||
Node.Version: 8.x
|
||||
Portable_Node10:
|
||||
Test.RuntimeIdentifier: none
|
||||
Node.Version: 10.x
|
||||
SelfContainedWindows_Node8:
|
||||
Test.RuntimeIdentifier: win-x64
|
||||
Node.Version: 8.x
|
||||
SelfContainedWindows_Node10:
|
||||
Test.RuntimeIdentifier: win-x64
|
||||
Node.Version: 10.x
|
||||
SelfContainedLinux_Node8:
|
||||
Test.RuntimeIdentifier: linux-x64
|
||||
Node.Version: 8.x
|
||||
SelfContainedLinux_Node10:
|
||||
Test.RuntimeIdentifier: linux-x64
|
||||
Node.Version: 10.x
|
||||
SelfContainedMacOs_Node8:
|
||||
Test.RuntimeIdentifier: osx-x64
|
||||
Node.Version: 8.x
|
||||
SelfContainedMacOs_Node10:
|
||||
Test.RuntimeIdentifier: osx-x64
|
||||
Node.Version: 10.x
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
displayName: Install Node $(Node.Version)
|
||||
inputs:
|
||||
versionSpec: $(Node.Version)
|
||||
- powershell: |
|
||||
test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier) -AdditionalRestoreSources $env:ADDITIONALRESTORESOURCES
|
||||
condition: ne(variables['PB_SkipTests'], 'true')
|
||||
displayName: Run E2E tests
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish test results
|
||||
condition: always()
|
||||
inputs:
|
||||
testRunner: vstest
|
||||
testResultsFiles: 'artifacts/logs/**/*.trx'
|
||||
- phase: Host_macOS
|
||||
queue:
|
||||
name: Hosted macOS
|
||||
parallel: 8
|
||||
matrix:
|
||||
Portable_Node8:
|
||||
Test.RuntimeIdentifier: none
|
||||
Node.Version: 8.x
|
||||
Portable_Node10:
|
||||
Test.RuntimeIdentifier: none
|
||||
Node.Version: 10.x
|
||||
SelfContainedWindows_Node8:
|
||||
Test.RuntimeIdentifier: win-x64
|
||||
Node.Version: 8.x
|
||||
SelfContainedWindows_Node10:
|
||||
Test.RuntimeIdentifier: win-x64
|
||||
Node.Version: 10.x
|
||||
SelfContainedLinux_Node8:
|
||||
Test.RuntimeIdentifier: linux-x64
|
||||
Node.Version: 8.x
|
||||
SelfContainedLinux_Node10:
|
||||
Test.RuntimeIdentifier: linux-x64
|
||||
Node.Version: 10.x
|
||||
SelfContainedMacOs_Node8:
|
||||
Test.RuntimeIdentifier: osx-x64
|
||||
Node.Version: 8.x
|
||||
SelfContainedMacOs_Node10:
|
||||
Test.RuntimeIdentifier: osx-x64
|
||||
Node.Version: 10.x
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
displayName: Install Node $(Node.Version)
|
||||
inputs:
|
||||
versionSpec: $(Node.Version)
|
||||
- powershell: |
|
||||
test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier) -AdditionalRestoreSources $env:ADDITIONALRESTORESOURCES
|
||||
condition: ne(variables['PB_SkipTests'], 'true')
|
||||
displayName: Run E2E tests
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish test results
|
||||
condition: always()
|
||||
inputs:
|
||||
testRunner: vstest
|
||||
testResultsFiles: 'artifacts/logs/**/*.trx'
|
||||
- phase: Host_Linux
|
||||
queue:
|
||||
name: Hosted Linux Preview
|
||||
parallel: 8
|
||||
matrix:
|
||||
Portable_Node8:
|
||||
Test.RuntimeIdentifier: none
|
||||
Node.Version: 8.x
|
||||
Portable_Node10:
|
||||
Test.RuntimeIdentifier: none
|
||||
Node.Version: 10.x
|
||||
SelfContainedWindows_Node8:
|
||||
Test.RuntimeIdentifier: win-x64
|
||||
Node.Version: 8.x
|
||||
SelfContainedWindows_Node10:
|
||||
Test.RuntimeIdentifier: win-x64
|
||||
Node.Version: 10.x
|
||||
SelfContainedLinux_Node8:
|
||||
Test.RuntimeIdentifier: linux-x64
|
||||
Node.Version: 8.x
|
||||
SelfContainedLinux_Node10:
|
||||
Test.RuntimeIdentifier: linux-x64
|
||||
Node.Version: 10.x
|
||||
SelfContainedMacOs_Node8:
|
||||
Test.RuntimeIdentifier: osx-x64
|
||||
Node.Version: 8.x
|
||||
SelfContainedMacOs_Node10:
|
||||
Test.RuntimeIdentifier: osx-x64
|
||||
Node.Version: 10.x
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
displayName: Install Node $(Node.Version)
|
||||
inputs:
|
||||
versionSpec: $(Node.Version)
|
||||
- powershell: |
|
||||
test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier) -AdditionalRestoreSources $env:ADDITIONALRESTORESOURCES
|
||||
condition: ne(variables['PB_SkipTests'], 'true')
|
||||
displayName: Run E2E tests
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish test results
|
||||
condition: always()
|
||||
inputs:
|
||||
testRunner: vstest
|
||||
testResultsFiles: 'artifacts/logs/**/*.trx'
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
trigger:
|
||||
- master
|
||||
- release/*
|
||||
|
||||
# See https://github.com/aspnet/BuildTools
|
||||
resources:
|
||||
repositories:
|
||||
- repository: buildtools
|
||||
type: github
|
||||
endpoint: DotNet-Bot GitHub Connection
|
||||
name: aspnet/BuildTools
|
||||
ref: refs/heads/master
|
||||
|
||||
phases:
|
||||
- template: .vsts-pipelines/templates/project-ci.yml@buildtools
|
||||
parameters:
|
||||
buildArgs: "/t:CheckUniverse"
|
||||
- phase: DataProtection
|
||||
queue: Hosted VS2017
|
||||
steps:
|
||||
- script: src/DataProtection/build.cmd -ci
|
||||
displayName: Run src/DataProtection/build.cmd
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish test results
|
||||
condition: always()
|
||||
inputs:
|
||||
testRunner: vstest
|
||||
testResultsFiles: 'src/DataProtection/artifacts/logs/**/*.trx'
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
; EditorConfig to support per-solution formatting.
|
||||
; Use the EditorConfig VS add-in to make this work.
|
||||
; http://editorconfig.org/
|
||||
|
||||
; This is the default for the codeline.
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{cs}]
|
||||
indent_size = 4
|
||||
dotnet_sort_system_directives_first = true:warning
|
||||
|
||||
[*.{xml,config,*proj,nuspec,props,resx,targets,yml,tasks}]
|
||||
indent_size = 2
|
||||
|
||||
[*.json]
|
||||
indent_size = 2
|
||||
|
||||
[*.{ps1,psm1}]
|
||||
indent_size = 4
|
||||
|
||||
[*.sh]
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
|
|
@ -1,50 +1,68 @@
|
|||
*.doc diff=astextplain
|
||||
*.DOC diff=astextplain
|
||||
*.docx diff=astextplain
|
||||
*.DOCX diff=astextplain
|
||||
*.dot diff=astextplain
|
||||
*.DOT diff=astextplain
|
||||
*.pdf diff=astextplain
|
||||
*.PDF diff=astextplain
|
||||
*.rtf diff=astextplain
|
||||
*.RTF diff=astextplain
|
||||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
*.jpg binary
|
||||
*.png binary
|
||||
*.gif binary
|
||||
###############################################################################
|
||||
# Make sh files under the build directory always have LF as line endings
|
||||
###############################################################################
|
||||
*.sh eol=lf
|
||||
|
||||
*.cs text=auto diff=csharp
|
||||
*.vb text=auto
|
||||
*.resx text=auto
|
||||
*.c text=auto
|
||||
*.cpp text=auto
|
||||
*.cxx text=auto
|
||||
*.h text=auto
|
||||
*.hxx text=auto
|
||||
*.py text=auto
|
||||
*.rb text=auto
|
||||
*.java text=auto
|
||||
*.html text=auto
|
||||
*.htm text=auto
|
||||
*.css text=auto
|
||||
*.scss text=auto
|
||||
*.sass text=auto
|
||||
*.less text=auto
|
||||
*.js text=auto
|
||||
*.lisp text=auto
|
||||
*.clj text=auto
|
||||
*.sql text=auto
|
||||
*.php text=auto
|
||||
*.lua text=auto
|
||||
*.m text=auto
|
||||
*.asm text=auto
|
||||
*.erl text=auto
|
||||
*.fs text=auto
|
||||
*.fsx text=auto
|
||||
*.hs text=auto
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
# This is need for earlier builds of msysgit that does not have it on by
|
||||
# default for csharp files.
|
||||
# Note: This is only used by command line
|
||||
###############################################################################
|
||||
#*.cs diff=csharp
|
||||
|
||||
*.csproj text=auto
|
||||
*.vbproj text=auto
|
||||
*.fsproj text=auto
|
||||
*.dbproj text=auto
|
||||
*.sln text=auto eol=crlf
|
||||
###############################################################################
|
||||
# Set the merge driver for project and solution files
|
||||
#
|
||||
# Merging from the command prompt will add diff markers to the files if there
|
||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||
# the diff markers are never inserted). Diff markers may cause the following
|
||||
# file extensions to fail to load in VS. An alternative would be to treat
|
||||
# these files as binary and thus will always conflict and require user
|
||||
# intervention with every merge. To do so, just uncomment the entries below
|
||||
###############################################################################
|
||||
#*.sln merge=binary
|
||||
#*.csproj merge=binary
|
||||
#*.vbproj merge=binary
|
||||
#*.vcxproj merge=binary
|
||||
#*.vcproj merge=binary
|
||||
#*.dbproj merge=binary
|
||||
#*.fsproj merge=binary
|
||||
#*.lsproj merge=binary
|
||||
#*.wixproj merge=binary
|
||||
#*.modelproj merge=binary
|
||||
#*.sqlproj merge=binary
|
||||
#*.wwaproj merge=binary
|
||||
|
||||
###############################################################################
|
||||
# behavior for image files
|
||||
#
|
||||
# image files are treated as binary by default.
|
||||
###############################################################################
|
||||
#*.jpg binary
|
||||
#*.png binary
|
||||
#*.gif binary
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
#*.doc diff=astextplain
|
||||
#*.DOC diff=astextplain
|
||||
#*.docx diff=astextplain
|
||||
#*.DOCX diff=astextplain
|
||||
#*.dot diff=astextplain
|
||||
#*.DOT diff=astextplain
|
||||
#*.pdf diff=astextplain
|
||||
#*.PDF diff=astextplain
|
||||
#*.rtf diff=astextplain
|
||||
#*.RTF diff=astextplain
|
||||
|
|
|
|||
|
|
@ -1,45 +0,0 @@
|
|||
To address your issues more quickly, please open the issue in the most appropriate repository.
|
||||
|
||||
If you're not sure exactly where to log the bug, please log the issue here and we will redirect it.
|
||||
|
||||
ASP.NET Core:
|
||||
- General issues: https://github.com/aspnet/Home (this repo)
|
||||
- MVC and Razor Pages: https://github.com/aspnet/Mvc
|
||||
- SignalR: https://github.com/aspnet/SignalR
|
||||
- Kestrel HTTP Server: https://github.com/aspnet/KestrelHttpServer
|
||||
- Docker: https://github.com/aspnet/aspnet-docker
|
||||
- Documentation: https://github.com/aspnet/Docs
|
||||
- Microsoft.NET.Sdk.Web: https://github.com/aspnet/websdk
|
||||
- See a full list here: https://github.com/aspnet
|
||||
- Note: Some repos do not have active issue trackers, so if you see such a warning, please log the issue here
|
||||
|
||||
ASP.NET 4.x:
|
||||
- ASP.NET MVC/Web API (not Core): https://github.com/aspnet/AspNetWebStack
|
||||
- Katana: https://github.com/aspnet/AspNetKatana
|
||||
|
||||
Entity Framework:
|
||||
- Entity Framework Core: https://github.com/aspnet/EntityFrameworkCore
|
||||
- Entity Framework 6: https://github.com/aspnet/EntityFramework6
|
||||
|
||||
Other common projects:
|
||||
- .NET Core CLI and SDK: https://github.com/dotnet/core
|
||||
- .NET Core runtime: https://github.com/dotnet/coreclr
|
||||
- .NET Core libraries: https://github.com/dotnet/corefx
|
||||
- NuGet: https://github.com/NuGet/home
|
||||
- Visual Studio: https://developercommunity.visualstudio.com
|
||||
- Visual Studio Code: https://github.com/microsoft/vscode
|
||||
- Omnisharp (C# support for VS Code): https://github.com/omnisharp/omnisharp-vscode
|
||||
|
||||
If you believe you have an issue that affects the security of the platform please do NOT create an issue and instead email your issue details to secure@microsoft.com. Your report may be eligible for our [bug bounty](https://technet.microsoft.com/en-us/mt764065.aspx).
|
||||
|
||||
---
|
||||
|
||||
Tips for opening great bugs:
|
||||
|
||||
1. Try enabling logging (in the most verbose level) and see if the details help you in fixing the issue you are seeing. Share the logs too if it helps in diagnosing the issue faster. More info: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging
|
||||
2. If you are seeing an exception, include the full exceptions details (message and stack trace). More info: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling
|
||||
3. Please try to include as much information as possible:
|
||||
1. Description of the problem:
|
||||
2. Steps to reproduce (preferrably a link to a GitHub repo with a repro project)
|
||||
3. The version of `Microsoft.AspNetCore.App` or `Microsoft.AspNetCore.All`
|
||||
4. The output of `dotnet --info`
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report about something that is not working
|
||||
---
|
||||
|
||||
### Describe the bug
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
### To Reproduce
|
||||
Steps to reproduce the behavior:
|
||||
1. Using this version of ASP.NET Core '...'
|
||||
2. Run this code '....'
|
||||
3. With these arguments '....'
|
||||
4. See error
|
||||
|
||||
### Expected behavior
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
### Screenshots
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
### Additional context
|
||||
Add any other context about the problem here.
|
||||
Include the output of `dotnet --info`
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
---
|
||||
|
||||
### Is your feature request related to a problem? Please describe.
|
||||
A clear and concise description of what the problem is.
|
||||
Example. I'm am trying to do [...] but [...]
|
||||
|
||||
### Describe the solution you'd like
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
### Describe alternatives you've considered
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
### Additional context
|
||||
Add any other context or screenshots about the feature request here.
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
Summary of the changes (Less than 80 chars)
|
||||
- Detail 1
|
||||
- Detail 2
|
||||
|
||||
Addresses #bugnumber (in this specific format)
|
||||
|
|
@ -1,27 +1,26 @@
|
|||
[Oo]bj/
|
||||
[Bb]in/
|
||||
TestResults/
|
||||
.nuget/
|
||||
bin/
|
||||
obj/
|
||||
.vs/
|
||||
_ReSharper.*/
|
||||
packages/
|
||||
artifacts/
|
||||
PublishProfiles/
|
||||
*.user
|
||||
*.suo
|
||||
*.cache
|
||||
*.docstates
|
||||
*.user
|
||||
_ReSharper.*
|
||||
nuget.exe
|
||||
*net45.csproj
|
||||
*k10.csproj
|
||||
*.psess
|
||||
*.vsp
|
||||
*.pidb
|
||||
*.DS_Store
|
||||
*.userprefs
|
||||
*DS_Store
|
||||
*.ncrunchsolution
|
||||
*.*sdf
|
||||
*.ipch
|
||||
*.sln.ide
|
||||
project.lock.json
|
||||
*.pidb
|
||||
*.vspx
|
||||
*.psess
|
||||
*.binlog
|
||||
*.log
|
||||
artifacts/
|
||||
StyleCop.Cache
|
||||
node_modules/
|
||||
*.snk
|
||||
.nuget
|
||||
.r
|
||||
.w
|
||||
.deps
|
||||
msbuild.ProjectImports.zip
|
||||
.env
|
||||
scripts/tmp/
|
||||
.dotnet/
|
||||
.tools/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,176 @@
|
|||
[submodule "modules/AADIntegration"]
|
||||
path = modules/AADIntegration
|
||||
url = https://github.com/aspnet/AADIntegration.git
|
||||
branch = master
|
||||
[submodule "modules/Antiforgery"]
|
||||
path = modules/Antiforgery
|
||||
url = https://github.com/aspnet/Antiforgery.git
|
||||
branch = master
|
||||
[submodule "modules/AuthSamples"]
|
||||
path = modules/AuthSamples
|
||||
url = https://github.com/aspnet/AuthSamples.git
|
||||
branch = master
|
||||
[submodule "modules/AzureIntegration"]
|
||||
path = modules/AzureIntegration
|
||||
url = https://github.com/aspnet/AzureIntegration.git
|
||||
branch = master
|
||||
[submodule "modules/BasicMiddleware"]
|
||||
path = modules/BasicMiddleware
|
||||
url = https://github.com/aspnet/BasicMiddleware.git
|
||||
branch = master
|
||||
[submodule "modules/BrowserLink"]
|
||||
path = modules/BrowserLink
|
||||
url = https://github.com/aspnet/BrowserLink.git
|
||||
branch = master
|
||||
[submodule "modules/Caching"]
|
||||
path = modules/Caching
|
||||
url = https://github.com/aspnet/Caching.git
|
||||
branch = master
|
||||
[submodule "modules/Common"]
|
||||
path = modules/Common
|
||||
url = https://github.com/aspnet/Common.git
|
||||
branch = master
|
||||
[submodule "modules/Configuration"]
|
||||
path = modules/Configuration
|
||||
url = https://github.com/aspnet/Configuration.git
|
||||
branch = master
|
||||
[submodule "modules/CORS"]
|
||||
path = modules/CORS
|
||||
url = https://github.com/aspnet/CORS.git
|
||||
branch = master
|
||||
[submodule "modules/DependencyInjection"]
|
||||
path = modules/DependencyInjection
|
||||
url = https://github.com/aspnet/DependencyInjection.git
|
||||
branch = master
|
||||
[submodule "modules/Diagnostics"]
|
||||
path = modules/Diagnostics
|
||||
url = https://github.com/aspnet/Diagnostics.git
|
||||
branch = master
|
||||
[submodule "modules/DotNetTools"]
|
||||
path = modules/DotNetTools
|
||||
url = https://github.com/aspnet/DotNetTools.git
|
||||
branch = master
|
||||
[submodule "modules/EntityFrameworkCore"]
|
||||
path = modules/EntityFrameworkCore
|
||||
url = https://github.com/aspnet/EntityFrameworkCore.git
|
||||
branch = master
|
||||
[submodule "modules/EventNotification"]
|
||||
path = modules/EventNotification
|
||||
url = https://github.com/aspnet/EventNotification.git
|
||||
branch = master
|
||||
[submodule "modules/FileSystem"]
|
||||
path = modules/FileSystem
|
||||
url = https://github.com/aspnet/FileSystem.git
|
||||
branch = master
|
||||
[submodule "modules/Hosting"]
|
||||
path = modules/Hosting
|
||||
url = https://github.com/aspnet/Hosting.git
|
||||
branch = master
|
||||
[submodule "modules/HtmlAbstractions"]
|
||||
path = modules/HtmlAbstractions
|
||||
url = https://github.com/aspnet/HtmlAbstractions.git
|
||||
branch = master
|
||||
[submodule "modules/HttpAbstractions"]
|
||||
path = modules/HttpAbstractions
|
||||
url = https://github.com/aspnet/HttpAbstractions.git
|
||||
branch = master
|
||||
[submodule "modules/HttpClientFactory"]
|
||||
path = modules/HttpClientFactory
|
||||
url = https://github.com/aspnet/HttpClientFactory.git
|
||||
branch = master
|
||||
[submodule "modules/HttpSysServer"]
|
||||
path = modules/HttpSysServer
|
||||
url = https://github.com/aspnet/HttpSysServer.git
|
||||
branch = master
|
||||
[submodule "modules/Identity"]
|
||||
path = modules/Identity
|
||||
url = https://github.com/aspnet/Identity.git
|
||||
branch = master
|
||||
[submodule "modules/IISIntegration"]
|
||||
path = modules/IISIntegration
|
||||
url = https://github.com/aspnet/IISIntegration.git
|
||||
branch = master
|
||||
[submodule "modules/JavaScriptServices"]
|
||||
path = modules/JavaScriptServices
|
||||
url = https://github.com/aspnet/JavaScriptServices.git
|
||||
branch = master
|
||||
[submodule "modules/JsonPatch"]
|
||||
path = modules/JsonPatch
|
||||
url = https://github.com/aspnet/JsonPatch.git
|
||||
branch = master
|
||||
[submodule "modules/KestrelHttpServer"]
|
||||
path = modules/KestrelHttpServer
|
||||
url = https://github.com/aspnet/KestrelHttpServer.git
|
||||
branch = master
|
||||
[submodule "modules/Localization"]
|
||||
path = modules/Localization
|
||||
url = https://github.com/aspnet/Localization.git
|
||||
branch = master
|
||||
[submodule "modules/Logging"]
|
||||
path = modules/Logging
|
||||
url = https://github.com/aspnet/Logging.git
|
||||
branch = master
|
||||
[submodule "modules/MetaPackages"]
|
||||
path = modules/MetaPackages
|
||||
url = https://github.com/aspnet/MetaPackages.git
|
||||
branch = master
|
||||
[submodule "modules/Microsoft.Data.Sqlite"]
|
||||
path = modules/Microsoft.Data.Sqlite
|
||||
url = https://github.com/aspnet/Microsoft.Data.Sqlite.git
|
||||
branch = master
|
||||
[submodule "modules/MusicStore"]
|
||||
path = modules/MusicStore
|
||||
url = https://github.com/aspnet/MusicStore.git
|
||||
branch = master
|
||||
[submodule "modules/Mvc"]
|
||||
path = modules/Mvc
|
||||
url = https://github.com/aspnet/Mvc.git
|
||||
branch = master
|
||||
[submodule "modules/Options"]
|
||||
path = modules/Options
|
||||
url = https://github.com/aspnet/Options.git
|
||||
branch = master
|
||||
[submodule "modules/Razor"]
|
||||
path = modules/Razor
|
||||
url = https://github.com/aspnet/Razor.git
|
||||
branch = master
|
||||
[submodule "modules/ResponseCaching"]
|
||||
path = modules/ResponseCaching
|
||||
url = https://github.com/aspnet/ResponseCaching.git
|
||||
branch = master
|
||||
[submodule "modules/Routing"]
|
||||
path = modules/Routing
|
||||
url = https://github.com/aspnet/Routing.git
|
||||
branch = master
|
||||
[submodule "modules/Scaffolding"]
|
||||
path = modules/Scaffolding
|
||||
url = https://github.com/aspnet/Scaffolding.git
|
||||
branch = master
|
||||
[submodule "modules/Security"]
|
||||
path = modules/Security
|
||||
url = https://github.com/aspnet/Security.git
|
||||
branch = master
|
||||
[submodule "modules/ServerTests"]
|
||||
path = modules/ServerTests
|
||||
url = https://github.com/aspnet/ServerTests.git
|
||||
branch = master
|
||||
[submodule "modules/Session"]
|
||||
path = modules/Session
|
||||
url = https://github.com/aspnet/Session.git
|
||||
branch = master
|
||||
[submodule "modules/SignalR"]
|
||||
path = modules/SignalR
|
||||
url = https://github.com/aspnet/SignalR.git
|
||||
branch = master
|
||||
[submodule "modules/StaticFiles"]
|
||||
path = modules/StaticFiles
|
||||
url = https://github.com/aspnet/StaticFiles.git
|
||||
branch = master
|
||||
[submodule "modules/Templating"]
|
||||
path = modules/Templating
|
||||
url = https://github.com/aspnet/Templating.git
|
||||
branch = master
|
||||
[submodule "modules/WebSockets"]
|
||||
path = modules/WebSockets
|
||||
url = https://github.com/aspnet/WebSockets.git
|
||||
branch = master
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"recommendations": [
|
||||
"ms-vscode.csharp",
|
||||
"ms-vscode.PowerShell",
|
||||
"EditorConfig.EditorConfig"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "PowerShell",
|
||||
"request": "launch",
|
||||
"name": "ps: Interactive Session",
|
||||
"cwd": "${workspaceRoot}"
|
||||
},
|
||||
{
|
||||
"name": ".NET Core Attach",
|
||||
"type": "coreclr",
|
||||
"request": "attach",
|
||||
"processId": "${command:pickProcess}"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"files.trimTrailingWhitespace": true,
|
||||
"files.associations": {
|
||||
"*.*proj": "xml",
|
||||
"*.props": "xml",
|
||||
"*.targets": "xml",
|
||||
"*.tasks": "xml"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,28 +1,22 @@
|
|||
# How to contribute
|
||||
|
||||
One of the easiest ways to contribute is to participate in discussions and discuss issues. You can also contribute by submitting pull requests with code changes.
|
||||
One of the easiest ways to contribute is to participate in discussions on GitHub issues. You can also contribute by submitting pull requests with code changes.
|
||||
|
||||
|
||||
## General feedback and discussions?
|
||||
Please start a discussion on the [Home repo issue tracker](https://github.com/aspnet/Home/issues).
|
||||
Please start a discussion on the [repo issue tracker](https://github.com/aspnet/AspNetCore/issues).
|
||||
|
||||
|
||||
## Bugs and feature requests?
|
||||
For non-security related bugs please log a new issue in the appropriate GitHub repo. Here are some of the most common repos:
|
||||
|
||||
* [DependencyInjection](https://github.com/aspnet/DependencyInjection)
|
||||
* [Docs](https://github.com/aspnet/Docs)
|
||||
* [EntityFramework](https://github.com/aspnet/EntityFramework)
|
||||
* [Identity](https://github.com/aspnet/Identity)
|
||||
* [MVC](https://github.com/aspnet/Mvc)
|
||||
* [Razor](https://github.com/aspnet/Razor)
|
||||
* [Templating](https://github.com/aspnet/templating)
|
||||
* [Entity Framework Core](https://github.com/aspnet/EntityFrameworkCore)
|
||||
* [Tooling](https://github.com/aspnet/Tooling)
|
||||
* [SignalR](https://github.com/aspnet/SignalR)
|
||||
* [Extensions](https://github.com/aspnet/Extensions)
|
||||
|
||||
Or browse the full list of repos in the [aspnet](https://github.com/aspnet/) organization.
|
||||
|
||||
|
||||
## Reporting security issues and bugs
|
||||
Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the [Security TechCenter](https://technet.microsoft.com/en-us/security/ff852094.aspx).
|
||||
|
||||
|
|
@ -34,53 +28,18 @@ Our team members also monitor several other discussion forums:
|
|||
* [Stack Overflow](https://stackoverflow.com/) with the [`asp.net-core`](https://stackoverflow.com/questions/tagged/asp.net-core), [`asp.net-core-mvc`](https://stackoverflow.com/questions/tagged/asp.net-core-mvc), or [`entity-framework-core`](https://stackoverflow.com/questions/tagged/entity-framework-core) tags.
|
||||
|
||||
|
||||
## Filing issues
|
||||
When filing issues, please use our [bug filing templates](https://github.com/aspnet/Home/wiki/Functional-bug-template).
|
||||
The best way to get your bug fixed is to be as detailed as you can be about the problem.
|
||||
Providing a minimal project with steps to reproduce the problem is ideal.
|
||||
Here are questions you can answer before you file a bug to make sure you're not missing any important information.
|
||||
|
||||
1. Did you read the [documentation](https://github.com/aspnet/home/wiki)?
|
||||
2. Did you include the snippet of broken code in the issue?
|
||||
3. What are the *EXACT* steps to reproduce this problem?
|
||||
4. What package versions are you using (you can see these in the `.csproj` file)?
|
||||
5. What operating system are you using?
|
||||
6. What version of IIS are you using?
|
||||
|
||||
GitHub supports [markdown](https://help.github.com/articles/github-flavored-markdown/), so when filing bugs make sure you check the formatting before clicking submit.
|
||||
|
||||
|
||||
## Contributing code and content
|
||||
|
||||
### Identifying the scale
|
||||
|
||||
If you would like to contribute to one of our repositories, first identify the scale of what you would like to contribute. If it is small (grammar/spelling or a bug fix) feel free to start working on a fix. If you are submitting a feature or substantial code contribution, please discuss it with the team and ensure it follows the product roadmap. You might also read these two blogs posts on contributing code: [Open Source Contribution Etiquette](http://tirania.org/blog/archive/2010/Dec-31.html) by Miguel de Icaza and [Don't "Push" Your Pull Requests](https://www.igvita.com/2011/12/19/dont-push-your-pull-requests/) by Ilya Grigorik. Note that all code submissions will be rigorously reviewed and tested by the ASP.NET and Entity Framework teams, and only those that meet an extremely high bar for both quality and design/roadmap appropriateness will be merged into the source.
|
||||
|
||||
### Obtaining the source code
|
||||
|
||||
If you are an outside contributor, please fork the ASP.NET repository you would like to contribute to your account. See the GitHub documentation for [forking a repo](https://help.github.com/articles/fork-a-repo/) if you have any questions about this.
|
||||
|
||||
### Building our Repositories
|
||||
|
||||
As our repositories use the latest bits of our code, we have a custom build script to fetch and use them. Please go through [building our repositories from source](https://github.com/aspnet/Home/wiki/Building-from-source) to understand and fix any issues.
|
||||
|
||||
### Submitting a pull request
|
||||
|
||||
You will need to sign a [Contributor License Agreement](https://cla.dotnetfoundation.org/) when submitting your pull request. To complete the Contributor License Agreement (CLA), you will need to follow the instructions provided by the CLA bot when you send the pull request. This needs to only be done once for any .NET Foundation OSS project.
|
||||
|
||||
If you don't know what a pull request is read this article: https://help.github.com/articles/using-pull-requests. Make sure the respository can build and all tests pass. Familiarize yourself with the project workflow and our coding conventions. The coding, style, and general engineering guidelines are published on the [Engineering guidelines](https://github.com/aspnet/Home/wiki/Engineering-guidelines) page.
|
||||
If you don't know what a pull request is read this article: https://help.github.com/articles/using-pull-requests. Make sure the respository can build and all tests pass. Familiarize yourself with the project workflow and our coding conventions. The coding, style, and general engineering guidelines are published on the [Engineering guidelines](https://github.com/aspnet/AspNetCore/wiki/Engineering-guidelines) page.
|
||||
|
||||
Pull requests should all be done to the **release/2.2** (for the next release) or **master** (for 3.0 work) branch.
|
||||
|
||||
### Commit/Pull Request Format
|
||||
|
||||
```
|
||||
Summary of the changes (Less than 80 chars)
|
||||
- Detail 1
|
||||
- Detail 2
|
||||
|
||||
Addresses #bugnumber (in this specific format)
|
||||
```
|
||||
|
||||
### Tests
|
||||
|
||||
|
|
@ -91,7 +50,7 @@ Addresses #bugnumber (in this specific format)
|
|||
|
||||
### Feedback
|
||||
|
||||
Your pull request will now go through extensive checks by the subject matter experts on our team. Please be patient; we have hundreds of pull requests across all of our repositories. Update your pull request according to feedback until it is approved by one of the ASP.NET team members. After that, one of our team members will add the pull request to **release/2.2** or **master**.
|
||||
Your pull request will now go through extensive checks by the subject matter experts on our team. Please be patient; we have hundreds of pull requests across all of our repositories. Update your pull request according to feedback until it is approved by one of the ASP.NET team members. After that, one of our team members may adjust the branch you merge into based on the expected release schedule.
|
||||
|
||||
## Code of conduct
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
<Project>
|
||||
<Import Project="version.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<Product>Microsoft ASP.NET Core</Product>
|
||||
<RepositoryRoot>$(MSBuildThisFileDirectory)</RepositoryRoot>
|
||||
<RepositoryUrl>https://github.com/aspnet/Universe</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)eng\AspNetCore.snk</AssemblyOriginatorKeyFile>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="build\external-dependencies.props" />
|
||||
<Import Project="build\sources.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<ArtifactsDir Condition="'$(ArtifactsDir)' == ''">$(RepositoryRoot)artifacts\</ArtifactsDir>
|
||||
<ArtifactsObjDir>$(ArtifactsDir)obj\</ArtifactsObjDir>
|
||||
<ArtifactsConfigurationDir>$(ArtifactsDir)$(Configuration)\</ArtifactsConfigurationDir>
|
||||
<ArtifactsBinDir>$(ArtifactsConfigurationDir)bin\</ArtifactsBinDir>
|
||||
<PackageOutputPath>$(ArtifactsConfigurationDir)packages\</PackageOutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="eng\targets\Wix.Common.props" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
|
||||
<Import Project="eng\targets\Cpp.Common.props" Condition="'$(MSBuildProjectExtension)' == '.vcxproj'" />
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp2.0' ">$(MicrosoftNETCoreApp20PackageVersion)</RuntimeFrameworkVersion>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp2.1' ">$(MicrosoftNETCoreApp21PackageVersion)</RuntimeFrameworkVersion>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp2.2' ">$(MicrosoftNETCoreApp22PackageVersion)</RuntimeFrameworkVersion>
|
||||
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp3.0' ">$(MicrosoftNETCoreApp30PackageVersion)</RuntimeFrameworkVersion>
|
||||
<NETStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netstandard2.0' ">$(NETStandardLibrary20PackageVersion)</NETStandardImplicitPackageVersion>
|
||||
<!-- aspnet/BuildTools#662 Don't police what version of NetCoreApp we use -->
|
||||
<NETCoreAppMaximumVersion>99.9</NETCoreAppMaximumVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="eng\targets\Wix.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
|
||||
<Import Project="eng\targets\Cpp.Common.targets" Condition="'$(MSBuildProjectExtension)' == '.vcxproj'" />
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.26124.0
|
||||
MinimumVisualStudioVersion = 15.0.26124.0
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{EE2CAA71-82AA-41C0-AE87-5B4FB77D6CFE}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedFx.UnitTests", "test\SharedFx.UnitTests\SharedFx.UnitTests.csproj", "{99CC38EC-902B-4B3F-AD33-177018110199}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Release|x64.Build.0 = Release|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{99CC38EC-902B-4B3F-AD33-177018110199} = {EE2CAA71-82AA-41C0-AE87-5B4FB77D6CFE}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<!--
|
||||
Restore sources should be defined in build/sources.props.
|
||||
The only allowed feed here is myget.org/aspnet-tools which is required to work around
|
||||
https://github.com/Microsoft/msbuild/issues/2914
|
||||
-->
|
||||
<add key="myget.org aspnetcore-tools" value="https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
124
README.md
124
README.md
|
|
@ -1,84 +1,40 @@
|
|||
|
||||
# ASP.NET Core
|
||||
|
||||
[app-metapackage-nuget]: https://nuget.org/packages/Microsoft.AspNetCore.All
|
||||
[app-metapackage-nuget-badge]: http://img.shields.io/nuget/v/Microsoft.AspNetCore.All.svg?style=flat-square&label=aspnet@stable
|
||||
[app-metapackage-myget]: https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.AspNetCore.App
|
||||
[app-metapackage-myget-badge]: http://img.shields.io/dotnet.myget/dotnet-core/v/Microsoft.AspNetCore.App.svg?style=flat-square&label=aspnet@preview
|
||||
|
||||
[![][app-metapackage-nuget-badge]][app-metapackage-nuget]
|
||||
[![][app-metapackage-myget-badge]][app-metapackage-myget]
|
||||
|
||||
[](https://gitter.im/aspnet/Home?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
This is the home page of the ASP.NET Core source code repositories and is intended for those contributing to ASP.NET Core or using bleeding edge nightly builds.
|
||||
|
||||
ASP.NET Core is a new open-source and cross-platform framework for building modern cloud based internet connected applications, such as web apps, IoT apps and mobile backends. ASP.NET Core apps can run on .NET Core or on the full .NET Framework. It was architected to provide an optimized development framework for apps that are deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your ASP.NET Core apps cross-platform on Windows, Mac and Linux. [Learn more about ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/).
|
||||
|
||||
ASP.NET Core 1.1 is now available! See the [release notes](https://github.com/aspnet/Home/releases/tag/1.1.0) for further details.
|
||||
|
||||
ASP.NET Core 2.0 is now available! See the [release notes](https://github.com/aspnet/Home/releases/tag/2.0.0) for further details and check our [releases](https://github.com/aspnet/home/releases) for the latest patch release.
|
||||
|
||||
ASP.NET Core 2.1 is now available! See the [release notes](https://github.com/aspnet/Home/releases/tag/2.1.0) for further details and check our [releases](https://github.com/aspnet/Home/releases/) for the latest patch release.
|
||||
|
||||
## Get Started
|
||||
|
||||
Follow the [Getting Started](https://docs.microsoft.com/en-us/aspnet/core/getting-started) instructions in the [ASP.NET Core docs](https://docs.microsoft.com/en-us/aspnet/index).
|
||||
|
||||
Also checkout the [.NET Homepage](https://www.microsoft.com/net) for released versions of .NET, getting started guides, and learning resources.
|
||||
|
||||
## Daily builds
|
||||
|
||||
If you want to use the latest daily build then you need to:
|
||||
|
||||
- Obtain the latest [build of the .NET Core SDK](https://github.com/dotnet/cli#installers-and-binaries)
|
||||
- Add a NuGet.Config to your app with the following content:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
|
||||
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
*NOTE: This NuGet.Config should be with your application unless you want nightly packages to potentially start being restored for other apps on the machine.*
|
||||
|
||||
Prerelease tooling builds for Visual Studio are available in the [Visual Studio Preview](https://www.visualstudio.com/vs/preview/).
|
||||
|
||||
|
||||
## Community and roadmap
|
||||
|
||||
To follow along with the development of ASP.NET Core:
|
||||
|
||||
- [Community Standup](http://live.asp.net): The community standup is held every week and streamed live to YouTube. You can view past standups in the linked playlist.
|
||||
- [Roadmap](https://github.com/aspnet/Home/wiki/Roadmap): The schedule and milestone themes for ASP.NET Core.
|
||||
|
||||
## Repos and projects
|
||||
|
||||
These are some of the most common repos:
|
||||
|
||||
* [DependencyInjection](https://github.com/aspnet/DependencyInjection) - basic dependency injection infrastructure and default implementation
|
||||
* [Docs](https://github.com/aspnet/Docs) - documentation sources for https://docs.microsoft.com/en-us/aspnet/core/
|
||||
* [EntityFrameworkCore](https://github.com/aspnet/EntityFrameworkCore) - data access technology
|
||||
* [Identity](https://github.com/aspnet/Identity) - users and membership system
|
||||
* [MVC](https://github.com/aspnet/Mvc) - MVC framework for web apps and services
|
||||
* [Razor](https://github.com/aspnet/Razor) - template language and syntax for CSHTML files
|
||||
* [SignalR](https://github.com/aspnet/SignalR) - library to add real-time web functionality
|
||||
* [Templating](https://github.com/aspnet/Templating) - project templates for Visual Studio and the .NET Core SDK
|
||||
* [Tooling](https://github.com/aspnet/Tooling) - Visual Studio tooling, editors, and dialogs
|
||||
|
||||
## NuGet feeds and branches
|
||||
|
||||
See the [NuGet feeds](https://github.com/aspnet/Home/wiki/NuGet-feeds) wiki page.
|
||||
|
||||
# Feedback
|
||||
|
||||
Check out the [contributing](CONTRIBUTING.md) page to see the best places to log issues and start discussions.
|
||||
|
||||
# Code of conduct
|
||||
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
||||
ASP.NET Core
|
||||
============
|
||||
|
||||
ASP.NET Core is an open-source and cross-platform framework for building modern cloud based internet connected applications, such as web apps, IoT apps and mobile backends. ASP.NET Core apps can run on .NET Core or on the full .NET Framework. It was architected to provide an optimized development framework for apps that are deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your ASP.NET Core apps cross-platform on Windows, Mac and Linux. [Learn more about ASP.NET Core](https://docs.microsoft.com/aspnet/core/).
|
||||
|
||||
ASP.NET Core 2.1 is now available! See the [release notes](https://github.com/aspnet/AspNetCore/releases/tag/2.1.0) for further details and check our [releases](https://github.com/aspnet/AspNetCore/releases/) for the latest patch release.
|
||||
|
||||
## Get Started
|
||||
|
||||
Follow the [Getting Started](https://docs.microsoft.com/aspnet/core/getting-started) instructions in the [ASP.NET Core docs](https://docs.microsoft.com/aspnet/index).
|
||||
|
||||
Also check out the [.NET Homepage](https://www.microsoft.com/net) for released versions of .NET, getting started guides, and learning resources.
|
||||
|
||||
## How to Engage, Contribute, and Give Feedback
|
||||
|
||||
Some of the best ways to contribute are to try things out, file issues, join in design conversations,
|
||||
and make pull-requests.
|
||||
|
||||
* [Download our latest daily builds](./docs/daily-builds.md)
|
||||
* Follow along with the development of ASP.NET Core:
|
||||
* [Community Standup](http://live.asp.net): The community standup is held every week and streamed live to YouTube. You can view past standups in the linked playlist.
|
||||
* [Roadmap](https://github.com/aspnet/AspNetCore/wiki/Roadmap): The schedule and milestone themes for ASP.NET Core.
|
||||
* [Build ASP.NET Core source code](./docs/build-from-source.md)
|
||||
* Check out the [contributing](CONTRIBUTING.md) page to see the best places to log issues and start discussions.
|
||||
|
||||
## Reporting security issues and bugs
|
||||
|
||||
Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the [Security TechCenter](https://technet.microsoft.com/en-us/security/ff852094.aspx).
|
||||
|
||||
## Related projects
|
||||
|
||||
These are some other repos for related projects:
|
||||
|
||||
* [Documentation](https://github.com/aspnet/Docs) - documentation sources for https://docs.microsoft.com/aspnet/core/
|
||||
* [Entity Framework Core](https://github.com/aspnet/EntityFrameworkCore) - data access technology
|
||||
* [Tooling](https://github.com/aspnet/Tooling) - Visual Studio tooling, editors, and dialogs
|
||||
|
||||
## Code of conduct
|
||||
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,86 @@
|
|||
.NET Core uses third-party libraries or other resources that may be
|
||||
distributed under licenses different than the .NET Core software.
|
||||
|
||||
In the event that we accidentally failed to list a required notice, please
|
||||
bring it to our attention. Post an issue or email us:
|
||||
|
||||
dotnet@microsoft.com
|
||||
|
||||
The attached notices are provided for information only.
|
||||
|
||||
License notice for dotnet-deb-tool
|
||||
------------------------------------
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) .NET Foundation and Contributors
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
License notice for IIS-Common
|
||||
------------------------------------
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE
|
||||
|
||||
License notice for IIS-Setup
|
||||
------------------------------------
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
@ECHO OFF
|
||||
PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0run.ps1' default-build %*; exit $LASTEXITCODE"
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
# Call "sync" between "chmod" and execution to prevent "text file busy" error in Docker (aufs)
|
||||
chmod +x "$DIR/run.sh"; sync
|
||||
"$DIR/run.sh" default-build "$@"
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<AzureIntegrationProjectRoot>$(MSBuildThisFileDirectory)..\modules\AzureIntegration\</AzureIntegrationProjectRoot>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="BuildAzureIntegration" DependsOnTargets="PrepareOutputPaths;GeneratePropsFiles">
|
||||
<PropertyGroup>
|
||||
<AzureIntegrationProjProperties>
|
||||
AspNetUniverseBuildOffline=true;
|
||||
RepositoryRoot=$(AzureIntegrationProjectRoot);
|
||||
DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);
|
||||
DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath);
|
||||
BuildNumber=$(BuildNumber);
|
||||
Configuration=$(Configuration);
|
||||
IsFinalBuild=$(IsFinalBuild);
|
||||
</AzureIntegrationProjProperties>
|
||||
</PropertyGroup>
|
||||
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)"
|
||||
Targets="$(AzureIntegrationProjectTargets)"
|
||||
Properties="$(AzureIntegrationProjProperties)" />
|
||||
|
||||
<ItemGroup>
|
||||
<AzureIntegrationArtifacts Include="$(AzureIntegrationProjectRoot)artifacts\build\*" />
|
||||
</ItemGroup>
|
||||
|
||||
<Copy SourceFiles="@(AzureIntegrationArtifacts)" DestinationFolder="$(BuildDir)" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
<Project>
|
||||
<Target Name="CheckForPreviousReleaseArchiveBaseline" BeforeTargets="CheckUniverse">
|
||||
<MSBuild Projects="@(ArchiveProjects)"
|
||||
Targets="CheckForPreviousReleaseArchiveBaseline" />
|
||||
</Target>
|
||||
|
||||
<ItemGroup>
|
||||
<ArchiveProjects Include="$(RepositoryRoot)src\PackageArchive\Archive.*\*.*proj" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="BuildFallbackArchive" DependsOnTargets="ResolveRepoInfo;GeneratePropsFiles">
|
||||
|
||||
|
||||
<PropertyGroup>
|
||||
<ArchiveBuildProps>
|
||||
DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);
|
||||
DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath);
|
||||
OutputPath=$(ArtifactsDir)lzma\;
|
||||
_BuildToolsAssembly=$(_BuildToolsAssembly)
|
||||
</ArchiveBuildProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<Error Text="Could not find any package archive projects to build"
|
||||
Condition=" @(ArchiveProjects->Count()) == 0 " />
|
||||
|
||||
<MSBuild Projects="@(ArchiveProjects)"
|
||||
Targets="Restore"
|
||||
BuildInParallel="false"
|
||||
StopOnFirstFailure="true"
|
||||
Properties="$(ArchiveBuildProps);_Dummy=restore" />
|
||||
|
||||
<MSBuild Projects="@(ArchiveProjects)"
|
||||
Targets="Build"
|
||||
BuildInParallel="false"
|
||||
StopOnFirstFailure="true"
|
||||
Properties="$(ArchiveBuildProps)" />
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,330 @@
|
|||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<DependencyAssetsDir>$(RepositoryRoot).deps\assets\</DependencyAssetsDir>
|
||||
<DependencyPackagesDir>$(RepositoryRoot).deps\packages\</DependencyPackagesDir>
|
||||
<!-- This file is used by the dotnet/cli to determine if our shared framework aligns with the version they pull. -->
|
||||
<BaseRuntimeVersionFileName>aspnetcore_base_runtime.version</BaseRuntimeVersionFileName>
|
||||
<BaseRuntimeVersionFile>$(IntermediateDir)$(BaseRuntimeVersionFileName)</BaseRuntimeVersionFile>
|
||||
<LatestRuntimeVersionFileName>latest.version</LatestRuntimeVersionFileName>
|
||||
<LatestRuntimeVersionFile>$(IntermediateDir)$(LatestRuntimeVersionFileName)</LatestRuntimeVersionFile>
|
||||
|
||||
<PublishDependsOn>
|
||||
ResolveCommitHash;
|
||||
PrepareOutputPaths;
|
||||
GetFilesToPublish;
|
||||
PublishToLocalFolder;
|
||||
PublishToAzureFeed;
|
||||
PublishToTransportFeed;
|
||||
PublishToMyGet;
|
||||
</PublishDependsOn>
|
||||
|
||||
<!-- Settings for pushing to the transport feed -->
|
||||
<PushToBlobFeed_UploadTimeoutMinutes>10</PushToBlobFeed_UploadTimeoutMinutes>
|
||||
<PushToBlobFeed_Overwrite Condition="'$(PushToBlobFeed_Overwrite)' == ''">false</PushToBlobFeed_Overwrite>
|
||||
<PushToBlobFeed_MaxClients Condition="'$(PushToBlobFeed_MaxClients)' == ''">8</PushToBlobFeed_MaxClients>
|
||||
<BlobFileRelativePathBase Condition="'$(BlobFileRelativePathBase)' == ''">assets</BlobFileRelativePathBase>
|
||||
<BlobFileRelativePathBase Condition="!HasTrailingSlash('$(BlobFileRelativePathBase)')">$(BlobFileRelativePathBase)/</BlobFileRelativePathBase>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="Publish" DependsOnTargets="$(PublishDependsOn)" />
|
||||
|
||||
<Target Name="GeneratePublishFiles" DependsOnTargets="ResolveCommitHash">
|
||||
<MakeDir Directories="$(IntermediateDir)" />
|
||||
|
||||
<!--
|
||||
Used by the dotnet/cli build to determine which version of Microsoft.NETCore.App is used.
|
||||
-->
|
||||
<WriteLinesToFile File="$(BaseRuntimeVersionFile)" Lines="$(MicrosoftNETCoreApp30PackageVersion)" Overwrite="true" />
|
||||
|
||||
<!--
|
||||
Used by the downloader scripts when pulling from a 'channel' instead of a specific version.
|
||||
The second line must be the package version.
|
||||
See dotnet-install.ps1/sh.
|
||||
-->
|
||||
<WriteLinesToFile
|
||||
File="$(LatestRuntimeVersionFile)"
|
||||
Lines="$(CommitHash);$(PackageVersion)"
|
||||
Overwrite="true" />
|
||||
|
||||
<ItemGroup>
|
||||
<SharedFxVersionBadge Include="$(IntermediateDir)$(SharedFxInstallerName)-%(AllSharedFxRIDs.Identity)-version-badge.svg" />
|
||||
</ItemGroup>
|
||||
|
||||
<GenerateSvgBadge
|
||||
OutputPath="%(SharedFxVersionBadge.Identity)"
|
||||
Label="version"
|
||||
Value="$(PackageVersion)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GetFilesToPublish" DependsOnTargets="GetArtifactInfo;GeneratePublishFiles">
|
||||
<PropertyGroup>
|
||||
<BlobBasePath>aspnetcore/Runtime/$(PackageVersion)/</BlobBasePath>
|
||||
<NpmBlobBasePath>aspnetcore/npm/</NpmBlobBasePath>
|
||||
<JarBlobBasePath>aspnetcore/jar/</JarBlobBasePath>
|
||||
<AliasBlobBasePath>aspnetcore/Runtime/$(SharedFxCliBlobChannel)/</AliasBlobBasePath>
|
||||
<SiteExtensionArchiveFileName>runtime-site-extension-internal-$(PackageVersion).zip</SiteExtensionArchiveFileName>
|
||||
<InstallerBaseFileName>aspnetcore-runtime-$(PackageVersion)</InstallerBaseFileName>
|
||||
<InstallerAliasBaseFileName>aspnetcore-runtime-latest</InstallerAliasBaseFileName>
|
||||
<IntermediateInstallerBaseFileName>aspnetcore-runtime-internal-$(PackageVersion)</IntermediateInstallerBaseFileName>
|
||||
<WindowsHostingBundleInstallerFileName>dotnet-hosting-$(PackageVersion)-win.exe</WindowsHostingBundleInstallerFileName>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Windows Server hosting bundle -->
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)$(WindowsHostingBundleInstallerFileName)">
|
||||
<RelativeBlobPath>$(BlobBasePath)$(WindowsHostingBundleInstallerFileName)</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
</FilesToPublish>
|
||||
|
||||
<!-- Package archives -->
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-ci-server-$(PackageVersion).zip" >
|
||||
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-ci-server-$(PackageVersion).zip</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
</FilesToPublish>
|
||||
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-ci-server-$(PackageVersion).patch.zip" >
|
||||
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-ci-server-$(PackageVersion).patch.zip</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
</FilesToPublish>
|
||||
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-ci-server-compat-$(PackageVersion).patch.zip" >
|
||||
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-ci-server-compat-$(PackageVersion).patch.zip</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
</FilesToPublish>
|
||||
|
||||
<!-- Intermediate files passed on to the dotnet-CLI. -->
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)$(SiteExtensionArchiveFileName)" Condition="@(Repository->AnyHaveMetadataValue('Identity', 'AzureIntegration'))">
|
||||
<RelativeBlobPath>$(BlobBasePath)$(SiteExtensionArchiveFileName)</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
</FilesToPublish>
|
||||
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-$(PackageVersion).lzma" >
|
||||
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-$(PackageVersion).lzma</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
</FilesToPublish>
|
||||
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)$(IntermediateInstallerBaseFileName)-%(IntermediateInstaller.Identity)%(IntermediateInstaller.FileExt)" Condition=" '%(IntermediateInstaller.Identity)' != '' ">
|
||||
<RelativeBlobPath>$(BlobBasePath)$(IntermediateInstallerBaseFileName)-%(IntermediateInstaller.Identity)%(IntermediateInstaller.FileExt)</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
</FilesToPublish>
|
||||
|
||||
<FilesToPublish Include="$(BaseRuntimeVersionFile)">
|
||||
<RelativeBlobPath>$(BlobBasePath)$(BaseRuntimeVersionFileName)</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
<ContentType>text/plain</ContentType>
|
||||
</FilesToPublish>
|
||||
|
||||
<!-- Archive installers -->
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)$(InstallerBaseFileName)-%(NativeInstaller.Identity)%(NativeInstaller.FileExt)" Condition=" '%(NativeInstaller.FileExt)' != '' ">
|
||||
<RelativeBlobPath>$(BlobBasePath)$(InstallerBaseFileName)-%(NativeInstaller.Identity)%(NativeInstaller.FileExt)</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
</FilesToPublish>
|
||||
|
||||
<!-- Support for README badges and dotnet-install.ps1/sh -->
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)$(InstallerBaseFileName)-%(NativeInstaller.Identity)%(NativeInstaller.FileExt)" Condition=" '%(NativeInstaller.FileExt)' != '' ">
|
||||
<RelativeBlobPath>$(AliasBlobBasePath)$(InstallerAliasBaseFileName)-%(NativeInstaller.Identity)%(NativeInstaller.FileExt)</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
<Overwrite>true</Overwrite>
|
||||
<!-- These uploads duplicate the same blob in a separate location for README download links and to make dotnet-install.ps1/sh work when specifying -Channel. -->
|
||||
<IsDuplicateUpload>true</IsDuplicateUpload>
|
||||
</FilesToPublish>
|
||||
|
||||
<FilesToPublish Include="@(SharedFxVersionBadge)">
|
||||
<RelativeBlobPath>$(AliasBlobBasePath)%(SharedFxVersionBadge.FileName)%(SharedFxVersionBadge.Extension)</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
<CacheControl>no-cache, no-store, must-revalidate</CacheControl>
|
||||
<ContentType>image/svg+xml</ContentType>
|
||||
<Overwrite>true</Overwrite>
|
||||
</FilesToPublish>
|
||||
|
||||
<FilesToPublish Include="$(LatestRuntimeVersionFile)">
|
||||
<RelativeBlobPath>$(AliasBlobBasePath)$(LatestRuntimeVersionFileName)</RelativeBlobPath>
|
||||
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
||||
<CacheControl>no-cache, no-store, must-revalidate</CacheControl>
|
||||
<ContentType>text/plain</ContentType>
|
||||
<Overwrite>true</Overwrite>
|
||||
</FilesToPublish>
|
||||
|
||||
<!-- Packages -->
|
||||
<_PackageArtifactInfo
|
||||
Include="@(ArtifactInfo)"
|
||||
ArtifactPath="$(DependencyPackagesDir)%(ArtifactInfo.PackageId).%(ArtifactInfo.Version).nupkg"
|
||||
Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetPackage'" />
|
||||
|
||||
<_SymbolsPackageArtifactInfo
|
||||
Include="@(ArtifactInfo)"
|
||||
ArtifactPath="$(DependencyPackagesDir)%(ArtifactInfo.PackageId).%(ArtifactInfo.Version).symbols.nupkg"
|
||||
Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetSymbolsPackage'" />
|
||||
|
||||
<FilesToPublish Include="$(DependencyPackagesDir)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)" Condition="'%(ArtifactInfo.ArtifactType)' == 'JavaJar'">
|
||||
<RelativeBlobPath>$(JarBlobBasePath)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)</RelativeBlobPath>
|
||||
<ManifestArtifactData>Type=JavaJar</ManifestArtifactData>
|
||||
</FilesToPublish>
|
||||
|
||||
<FilesToPublish Include="$(DependencyAssetsDir)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)" Condition="'%(ArtifactInfo.ArtifactType)' == 'MavenPOM'">
|
||||
<RelativeBlobPath>$(JarBlobBasePath)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)</RelativeBlobPath>
|
||||
</FilesToPublish>
|
||||
|
||||
<NpmPackageToPublish Include="$(DependencyAssetsDir)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)" Condition="'%(ArtifactInfo.ArtifactType)' == 'NpmPackage'">
|
||||
<RelativeBlobPath>$(NpmBlobBasePath)%(ArtifactInfo.PackageId)/%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)</RelativeBlobPath>
|
||||
<ManifestArtifactData>Type=NpmPackage</ManifestArtifactData>
|
||||
<ContentType>application/tar+gzip</ContentType>
|
||||
</NpmPackageToPublish>
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Join required because shipping category is stored in universe (PackageArtifact), but information about package ID and version comes from repos (ArtifactInfo). -->
|
||||
<RepoTasks.JoinItems
|
||||
Left="@(_PackageArtifactInfo->WithMetadataValue('Category',''))" LeftKey="PackageId" LeftMetadata="*" LeftItemSpec="Identity"
|
||||
Right="@(PackageArtifact)" RightMetadata="Category">
|
||||
<Output TaskParameter="JoinResult" ItemName="_PackageArtifactInfoWithCategory" />
|
||||
</RepoTasks.JoinItems>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageToPublish Include="%(_PackageArtifactInfoWithCategory.ArtifactPath)" Category="%(_PackageArtifactInfoWithCategory.Category)" />
|
||||
<PackageToPublish Include="%(_PackageArtifactInfo.ArtifactPath)" Category="%(_PackageArtifactInfo.Category)" Condition="'%(_PackageArtifactInfo.Category)' != ''" />
|
||||
<PackageToPublish Include="%(_SymbolsPackageArtifactInfo.ArtifactPath)" Category="symbols" IsSymbolsPackage="true" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<_MissingArtifactFile Include="@(FilesToPublish)" Condition="!Exists(%(FilesToPublish.Identity))" />
|
||||
<_MissingArtifactFile Include="@(NpmPackageToPublish)" Condition="!Exists(%(NpmPackageToPublish.Identity))" />
|
||||
<_MissingArtifactFile Include="@(PackageToPublish)" Condition="!Exists(%(PackageToPublish.Identity))" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="Missing expected files:%0A - @(_MissingArtifactFile, '%0A - ')" Condition="@(_MissingArtifactFile->Count()) != 0" />
|
||||
</Target>
|
||||
|
||||
<Target Name="PublishToLocalFolder" DependsOnTargets="GetFilesToPublish">
|
||||
<Copy SourceFiles="%(FilesToPublish.Identity)" DestinationFiles="$(ArtifactsDir)%(FilesToPublish.RelativeBlobPath)" Condition="'%(FilesToPublish.RelativeBlobPath)' != ''" />
|
||||
<Copy SourceFiles="%(NpmPackageToPublish.Identity)" DestinationFolder="$(ArtifactsDir)npm\" />
|
||||
<Copy SourceFiles="%(PackageToPublish.Identity)" DestinationFolder="$(ArtifactsDir)packages\%(PackageToPublish.Category)\" />
|
||||
</Target>
|
||||
|
||||
<Target Name="PublishToMyGet"
|
||||
DependsOnTargets="GetFilesToPublish;GetToolsets"
|
||||
Condition="'$(PublishToMyget)' == 'true'">
|
||||
|
||||
<Error Text="Missing required property: PublishMyGetFeedUrl" Condition=" '$(PublishMyGetFeedUrl)' == '' "/>
|
||||
<Error Text="Missing required property: PublishMyGetSymbolsFeedUrl" Condition=" '$(PublishMyGetSymbolsFeedUrl)' == '' "/>
|
||||
<Error Text="Missing required property: PublishMyGetNpmRegistryUrl" Condition=" '$(PublishMyGetNpmRegistryUrl)' == '' "/>
|
||||
<Error Text="Missing required property: PublishMyGetFeedKey" Condition=" '$(PublishMyGetFeedKey)' == '' "/>
|
||||
|
||||
<Error Text="No packages found to publish" Condition="@(PackageToPublish->Count()) == 0" />
|
||||
|
||||
<PushNuGetPackages Condition="'%(PackageToPublish.IsSymbolsPackage)' != 'true' AND @(PackageToPublish->Count()) != 0"
|
||||
Packages="@(PackageToPublish)"
|
||||
Feed="$(PublishMyGetFeedUrl)"
|
||||
ApiKey="$(PublishMyGetFeedKey)" />
|
||||
|
||||
<PushNuGetPackages Condition="'%(PackageToPublish.IsSymbolsPackage)' == 'true' AND @(PackageToPublish->Count()) != 0"
|
||||
Packages="@(PackageToPublish)"
|
||||
Feed="$(PublishMyGetSymbolsFeedUrl)"
|
||||
ApiKey="$(PublishMyGetFeedKey)" />
|
||||
|
||||
<PropertyGroup>
|
||||
<AuthTokenSetting>$(PublishMyGetNpmRegistryUrl.Replace("https:", "")):_authToken</AuthTokenSetting>
|
||||
</PropertyGroup>
|
||||
|
||||
<Message Condition=" @(NpmPackageToPublish->Count()) != 0 "
|
||||
Text="Skipping NPM publish because there are no npm packages to publish."
|
||||
Importance="high" />
|
||||
|
||||
<Exec Condition=" @(NpmPackageToPublish->Count()) != 0 "
|
||||
Command="npm config set "$(AuthTokenSetting)" $(PublishMyGetFeedKey)"
|
||||
StandardOutputImportance="Normal" />
|
||||
|
||||
<!-- When you UseCommandProcessor FileName is ignored -->
|
||||
<Run Condition=" @(NpmPackageToPublish->Count()) != 0 "
|
||||
FileName="cmd"
|
||||
Arguments="npm;publish;--registry;$(PublishMyGetNpmRegistryUrl);%(NpmPackageToPublish.Identity)"
|
||||
MaxRetries="5"
|
||||
UseCommandProcessor="true"
|
||||
ContinueOnError="true">
|
||||
<Output TaskParameter="ExitCode" ItemName="_NpmExitCodes" />
|
||||
</Run>
|
||||
|
||||
<Exec Condition=" @(NpmPackageToPublish->Count()) != 0 "
|
||||
Command="npm config delete $(AuthTokenSetting)"
|
||||
StandardOutputImportance="Normal" />
|
||||
|
||||
<Error Text="Publishing npm modules failed" Condition=" @(NpmPackageToPublish->Count()) != 0 AND %(_NpmExitCodes.Identity) != 0" />
|
||||
</Target>
|
||||
|
||||
<Target Name="PublishToAzureFeed"
|
||||
DependsOnTargets="GetFilesToPublish"
|
||||
Condition="'$(PublishToAzureFeed)' == 'true'">
|
||||
|
||||
<PropertyGroup>
|
||||
<!--
|
||||
Allow setting AzureBlobRelativePathBase to control the base path of all uploaded blobs.
|
||||
AzureBlobRelativePathBase should end in a slash.
|
||||
-->
|
||||
<AzureBlobRelativePathBase Condition="'$(AzureBlobRelativePathBase)' != '' AND !HasTrailingSlash('$(AzureBlobRelativePathBase)')">$(AzureBlobRelativePathBase)/</AzureBlobRelativePathBase>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition=" '$(AzureBlobRelativePathBase)' != '' ">
|
||||
<FilesToPublish Update="@(FilesToPublish)" RelativeBlobPath="$(AzureBlobRelativePathBase)%(FilesToPublish.RelativeBlobPath)" />
|
||||
</ItemGroup>
|
||||
|
||||
<RepoTasks.PublishToAzureBlob
|
||||
AccountName="$(AzureAccountName)"
|
||||
SharedAccessToken="$(AzureSharedAccessToken)"
|
||||
ContainerName="$(AzureContainerName)"
|
||||
Files="@(FilesToPublish)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="PublishToTransportFeed"
|
||||
DependsOnTargets="ResolveCommitHash;GetFilesToPublish"
|
||||
Condition="'$(PublishToTransportFeed)' == 'true'">
|
||||
|
||||
<ItemGroup>
|
||||
<PackageToPublishToTransport
|
||||
Include="@(PackageToPublish)"
|
||||
Condition="'%(PackageToPublish.Category)' == 'ship'" />
|
||||
|
||||
<PackageToPublishToTransport
|
||||
Include="@(PackageToPublish)"
|
||||
ManifestArtifactData="NonShipping=true"
|
||||
Condition="'%(PackageToPublish.Category)' != 'ship'" />
|
||||
|
||||
<FilesToPublishToTransport Include="@(NpmPackageToPublish)"
|
||||
RelativeBlobPath="$(BlobFileRelativePathBase)%(NpmPackageToPublish.RelativeBlobPath)"
|
||||
ManifestArtifactData="%(NpmPackageToPublish.ManifestArtifactData)" />
|
||||
|
||||
<!-- Filter aliased artifacts to workaround dotnet/buildtools#1855 -->
|
||||
<FilesToPublishToTransport Include="@(FilesToPublish)"
|
||||
RelativeBlobPath="$(BlobFileRelativePathBase)%(FilesToPublish.RelativeBlobPath)"
|
||||
ManifestArtifactData="%(FilesToPublish.ManifestArtifactData)"
|
||||
Condition=" '%(FilesToPublish.IsDuplicateUpload)' != 'true' " />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
<PushToBlobFeed ExpectedFeedUrl="$(PublishBlobFeedUrl)"
|
||||
AccountKey="$(PublishBlobFeedKey)"
|
||||
ItemsToPush="@(PackageToPublishToTransport)"
|
||||
Overwrite="$(PushToBlobFeed_Overwrite)"
|
||||
UploadTimeoutInMinutes="$(PushToBlobFeed_UploadTimeoutMinutes)"
|
||||
ManifestBranch="$(BuildBranch)"
|
||||
ManifestBuildId="$(Version)"
|
||||
ManifestBuildData="ProductVersion=$(PackageVersion);UniverseCommitHash=$(CommitHash)"
|
||||
ManifestCommit="$(CommitHash)"
|
||||
ManifestName="aspnet"
|
||||
MaxClients="$(PushToBlobFeed_MaxClients)"
|
||||
Condition="@(PackageToPublish->Count()) != 0" />
|
||||
|
||||
<PushToBlobFeed ExpectedFeedUrl="$(PublishBlobFeedUrl)"
|
||||
AccountKey="$(PublishBlobFeedKey)"
|
||||
ItemsToPush="@(FilesToPublishToTransport)"
|
||||
PublishFlatContainer="true"
|
||||
Overwrite="$(PushToBlobFeed_Overwrite)"
|
||||
UploadTimeoutInMinutes="$(PushToBlobFeed_UploadTimeoutMinutes)"
|
||||
ManifestBranch="$(BuildBranch)"
|
||||
ManifestBuildId="$(Version)"
|
||||
ManifestBuildData="ProductVersion=$(PackageVersion);UniverseCommitHash=$(CommitHash)"
|
||||
ManifestCommit="$(CommitHash)"
|
||||
ManifestName="aspnet"
|
||||
MaxClients="$(PushToBlobFeed_MaxClients)" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,191 @@
|
|||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Experimental flag to run assemblies AND repos tests in parallel...if you dare. -->
|
||||
<TestReposInParallel>false</TestReposInParallel>
|
||||
|
||||
<_NoBuildRepos>$(NoBuild)</_NoBuildRepos>
|
||||
<_BuildScriptToExecute Condition="'$(OS)'!='Windows_NT'">build.sh</_BuildScriptToExecute>
|
||||
<_BuildScriptToExecute Condition="'$(OS)'=='Windows_NT'">build.cmd</_BuildScriptToExecute>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="GetRepoBatches" DependsOnTargets="GeneratePropsFiles;ComputeGraph">
|
||||
<ItemGroup>
|
||||
<RepositoryBuildOrder Condition="'%(RootPath)' == ''">
|
||||
<RootPath>$(SubmoduleRoot)%(Identity)\</RootPath>
|
||||
</RepositoryBuildOrder>
|
||||
<BatchedRepository Include="$(MSBuildProjectFullPath)">
|
||||
<BuildGroup>%(RepositoryBuildOrder.Order)</BuildGroup>
|
||||
<Repository>%(RepositoryBuildOrder.Identity)</Repository>
|
||||
<AdditionalProperties>
|
||||
RepositoryToBuild=%(RepositoryBuildOrder.Identity);
|
||||
BuildRepositoryRoot=$([MSBuild]::NormalizeDirectory(%(RepositoryBuildOrder.RootPath)))
|
||||
</AdditionalProperties>
|
||||
</BatchedRepository>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="_BuildRepositories" DependsOnTargets="GetRepoBatches" Condition=" @(RepositoryBuildOrder->Count()) != 0 ">
|
||||
<MSBuild
|
||||
Projects="@(BatchedRepository)"
|
||||
BuildInParallel="true"
|
||||
StopOnFirstFailure="true"
|
||||
Targets="_BuildRepository"
|
||||
Properties="BuildGroup=%(BatchedRepository.BuildGroup);BuildNumber=$(BuildNumber);IsFinalBuild=$(IsFinalBuild);Configuration=$(Configuration)" />
|
||||
|
||||
<PropertyGroup>
|
||||
<_NoBuildRepos>true</_NoBuildRepos>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="_TestRepositories" DependsOnTargets="GetRepoBatches" Condition=" @(RepositoryBuildOrder->Count()) != 0 ">
|
||||
<!--
|
||||
Use the task to sort instead of batching (i.e. using %(BatchedRepository.BuildGroup))
|
||||
When batching, StopOnFirstFailure doesn't help because the MSBuild task would be invoked multiple times
|
||||
instead of invoking once with many projects.
|
||||
-->
|
||||
<RepoTasks.OrderBy Items="@(BatchedRepository)" Key="BuildGroup">
|
||||
<Output TaskParameter="Items" ItemName="_BatchedTestRepo" />
|
||||
</RepoTasks.OrderBy>
|
||||
|
||||
<MSBuild
|
||||
Projects="@(_BatchedTestRepo)"
|
||||
BuildInParallel="$(TestProjectsInParallel)"
|
||||
StopOnFirstFailure="false"
|
||||
Targets="_TestRepository"
|
||||
Properties="BuildNumber=$(BuildNumber);IsFinalBuild=$(IsFinalBuild);Configuration=$(Configuration);_NoBuildRepos=$(_NoBuildRepos)"
|
||||
ContinueOnError="true">
|
||||
<Output TaskParameter="TargetOutputs" ItemName="_RepoTestResults" />
|
||||
</MSBuild>
|
||||
|
||||
<Warning Text="No test results were found from running repos." Condition="@(_RepoTestResults->Count()) == 0"/>
|
||||
<Message Text="Tests passed for the following repos:%0A - @(_RepoTestResults->WithMetadataValue('Success', 'true'), '%0A - ')"
|
||||
Importance="High"
|
||||
Condition="@(_RepoTestResults->WithMetadataValue('Success', 'true')->Count()) != 0 " />
|
||||
<Error Text="Tests failed for the following repos:%0A - @(_RepoTestResults->WithMetadataValue('Success', 'false'), '%0A - ')"
|
||||
Condition="@(_RepoTestResults->WithMetadataValue('Success', 'false')->Count()) != 0 " />
|
||||
</Target>
|
||||
|
||||
<!-- Inner build context -->
|
||||
|
||||
<Target Name="GetRepoBuildProps">
|
||||
<PropertyGroup>
|
||||
<SkipTestsDueToMissingSharedFx Condition="'$(InstallSharedRuntimeFromPreviousBuild)' != 'true' And '$(TestsRequiredTheSharedRuntime)' == 'true' ">true</SkipTestsDueToMissingSharedFx>
|
||||
|
||||
<RepositoryBuildArguments Condition="'$(CI)'== 'true'">$(RepositoryBuildArguments) -ci</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments Condition="'$(CI)'== 'true' AND '$(OS)' != 'Windows_NT'">$(RepositoryBuildArguments) --dotnet-home '$(DOTNET_HOME)'</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments Condition="'$(CI)'== 'true' AND '$(OS)' == 'Windows_NT'">$(RepositoryBuildArguments) -DotNetHome '$(DOTNET_HOME)'</RepositoryBuildArguments>
|
||||
<!-- 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:DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)</RepositoryBuildArguments>
|
||||
<!--
|
||||
Temporary: Don't real-sign EntityFrameworkCore inline due issues with SignTool and powershell scripts.
|
||||
TODO: remove when https://github.com/aspnet/BuildTools/pull/788 is merged.
|
||||
-->
|
||||
<RepositoryBuildArguments Condition="'$(RepositoryToBuild)' != 'EntityFrameworkCore'">$(RepositoryBuildArguments) /p:SignType=$(SignType)</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber)</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:Configuration=$(Configuration)</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:IsFinalBuild=$(IsFinalBuild)</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) '/p:DotNetAssetRootAccessTokenSuffix=$(DotNetAssetRootAccessTokenSuffix)'</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) '/p:DotNetAssetRootUrl=$(DotNetAssetRootUrl)'</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments Condition=" '$(SkipTestsDueToMissingSharedFx)' == 'true' ">$(RepositoryBuildArguments) /p:SkipAspNetCoreRuntimeInstall=true</RepositoryBuildArguments>
|
||||
|
||||
<SourceLockFile>$(RepositoryRoot)korebuild-lock.txt</SourceLockFile>
|
||||
<RepoLockFile>$(BuildRepositoryRoot)korebuild-lock.txt</RepoLockFile>
|
||||
<BackupRepoLockFile>$(IntermediateDir)$(RepositoryToBuild)-korebuild-lock.txt</BackupRepoLockFile>
|
||||
<RepoGlobalJsonFile>$(BuildRepositoryRoot)global.json</RepoGlobalJsonFile>
|
||||
<BackupRepoGlobalJsonFile>$(IntermediateDir)$(RepositoryToBuild)-global.json</BackupRepoGlobalJsonFile>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="_UpdateRepoLockFile">
|
||||
<!-- Copy Korebuild lock file to individual repos to align version if the repo doesn't already have one -->
|
||||
<Message Text="Copying KoreBuild lockfile from Universe to repository $(BuildRepositoryRoot)"/>
|
||||
<Move SourceFiles="$(RepoLockFile)" DestinationFiles="$(BackupRepoLockFile)" Condition="Exists($(RepoLockFile))" />
|
||||
<Move SourceFiles="$(RepoGlobalJsonFile)" DestinationFiles="$(BackupRepoGlobalJsonFile)" Condition="Exists($(RepoGlobalJsonFile))" />
|
||||
<Copy SourceFiles="$(SourceLockFile)" DestinationFiles="$(RepoLockFile)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_RestoreOriginalRepoLockFile">
|
||||
<!-- Restore original Korebuild lock file -->
|
||||
<Delete Files="$(RepoLockFile)" ContinueOnError="true" />
|
||||
<Move SourceFiles="$(BackupRepoLockFile)" DestinationFiles="$(RepoLockFile)" Condition="Exists($(BackupRepoLockFile))" />
|
||||
<Move SourceFiles="$(BackupRepoGlobalJsonFile)" DestinationFiles="$(RepoGlobalJsonFile)" Condition="Exists($(BackupRepoGlobalJsonFile))" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_BuildRepository" DependsOnTargets="GetRepoBuildProps;_UpdateRepoLockFile">
|
||||
<PropertyGroup>
|
||||
<BuildArguments>/t:CleanArtifacts /t:Build /p:SkipTests=true $(RepositoryBuildArguments)</BuildArguments>
|
||||
<BuildArguments Condition="'$(ProduceRepoBinLog)' == 'true'">$(BuildArguments) /bl:$(LogOutputDir)$(RepositoryToBuild).build.binlog</BuildArguments>
|
||||
<RepositoryArtifactsRoot>$(BuildRepositoryRoot)artifacts\</RepositoryArtifactsRoot>
|
||||
<RepositoryArtifactsBuildDirectory>$(RepositoryArtifactsRoot)build\</RepositoryArtifactsBuildDirectory>
|
||||
<RepositoryArtifactsMSBuildDirectory>$(RepositoryArtifactsRoot)msbuild\</RepositoryArtifactsMSBuildDirectory>
|
||||
</PropertyGroup>
|
||||
|
||||
<Message Text="============ Building $(RepositoryToBuild) ============" Importance="High" />
|
||||
|
||||
<Exec
|
||||
Command="./$(_BuildScriptToExecute) -Path $(BuildRepositoryRoot) $(BuildArguments)"
|
||||
IgnoreStandardErrorWarningFormat="true"
|
||||
WorkingDirectory="$(RepositoryRoot)"
|
||||
IgnoreExitCode="true"
|
||||
ContinueOnError="WarnAndContinue">
|
||||
<Output TaskParameter="ExitCode" PropertyName="BuildExitCode" />
|
||||
</Exec>
|
||||
|
||||
<CallTarget Targets="_RestoreOriginalRepoLockFile" />
|
||||
|
||||
<!-- Fail if build.cmd didn't exit code 0 or process failed to start. -->
|
||||
<Error Text="Building $(RepositoryToBuild) failed: $(_BuildScriptToExecute) exited code $(BuildExitCode)" Condition=" '$(BuildExitCode)' != '0' " />
|
||||
|
||||
<ItemGroup>
|
||||
<RepositoryArtifacts Include="$(RepositoryArtifactsBuildDirectory)*" />
|
||||
<RepositoryMSBuildArtifacts Include="$(RepositoryArtifactsMSBuildDirectory)**\*" />
|
||||
</ItemGroup>
|
||||
|
||||
<Copy
|
||||
SourceFiles="@(RepositoryArtifacts)"
|
||||
DestinationFolder="$(BuildDir)" />
|
||||
|
||||
<Move
|
||||
SourceFiles="@(RepositoryMSBuildArtifacts)"
|
||||
DestinationFolder="$(ArtifactsDir)msbuild\$(RepositoryToBuild)\%(RecursiveDir)" />
|
||||
|
||||
<Message Text="============ Done building $(RepositoryToBuild) ============" Importance="High" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_TestRepository" DependsOnTargets="GetRepoBuildProps;_UpdateRepoLockFile" Returns="@(RepositoryTestResult)">
|
||||
<PropertyGroup>
|
||||
<BuildArguments>/t:Test /p:NoBuild=$(_NoBuildRepos) $(RepositoryBuildArguments)</BuildArguments>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<RepositoryTestResult Include="$(RepositoryToBuild)" Success="false" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- To enable this test, either publish the shared runtime to https://dotnetcli.blob.core.windows.net/dotnet, or override the install location by setting AspNetCoreFxFeed. -->
|
||||
<Warning Text="Skipping tests because InstallSharedRuntimeFromPreviousBuild != 'true'." Condition="'$(SkipTestsDueToMissingSharedFx)' == 'true' "/>
|
||||
|
||||
<Message Text="============ Testing $(RepositoryToBuild) ============" Importance="High" />
|
||||
|
||||
<Exec Condition="'$(SkipTestsDueToMissingSharedFx)' != 'true' "
|
||||
Command="./$(_BuildScriptToExecute) -Path $(BuildRepositoryRoot) $(BuildArguments)"
|
||||
IgnoreStandardErrorWarningFormat="true"
|
||||
WorkingDirectory="$(RepositoryRoot)"
|
||||
IgnoreExitCode="true">
|
||||
<Output TaskParameter="ExitCode" PropertyName="TestExitCode" />
|
||||
</Exec>
|
||||
|
||||
<CallTarget Targets="_RestoreOriginalRepoLockFile" />
|
||||
|
||||
<ItemGroup>
|
||||
<RepositoryTestResult Update="$(RepositoryToBuild)" Success="true" Condition="'$(TestExitCode)' == '0' OR '$(SkipTestsDueToMissingSharedFx)' == 'true' " />
|
||||
</ItemGroup>
|
||||
|
||||
<Message Text="============ Done testing $(RepositoryToBuild) ============" Importance="High" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<!-- directories -->
|
||||
<_WorkRoot>$(RepositoryRoot).w\$(SharedFxRID)\</_WorkRoot>
|
||||
<_WorkLayoutDir>$(_WorkRoot).l\</_WorkLayoutDir>
|
||||
<_WorkOutputDir>$(_WorkRoot).o\</_WorkOutputDir>
|
||||
<_MetapackageSrcRoot>$(RepositoryRoot)src\Packages\</_MetapackageSrcRoot>
|
||||
<_TemplatesDir>$(MSBuildThisFileDirectory)tools\templates\</_TemplatesDir>
|
||||
<_DockerDir>$(MSBuildThisFileDirectory)tools\docker\</_DockerDir>
|
||||
<_PackagingDir>$(MSBuildThisFileDirectory)tools\packaging\</_PackagingDir>
|
||||
<_SharedFxSourceDir>$(RepositoryRoot).deps\Signed\SharedFx\</_SharedFxSourceDir>
|
||||
<_InstallerSourceDir>$(RepositoryRoot).deps\Installers\</_InstallerSourceDir>
|
||||
<_SymbolsSourceDir>$(RepositoryRoot).deps\symbols\</_SymbolsSourceDir>
|
||||
<_DockerRootDir>/opt/code/</_DockerRootDir>
|
||||
<_InstallersOutputDir>$(ArtifactsDir)installers\</_InstallersOutputDir>
|
||||
<!-- 3B = semicolon in ASCII -->
|
||||
<PathSeparator Condition="'$(PathSeparator)' == ''">:</PathSeparator>
|
||||
<PathSeparator Condition="$(SharedFxRID.StartsWith('win'))">%3B</PathSeparator>
|
||||
<ArchiveExtension>.tar.gz</ArchiveExtension>
|
||||
<ArchiveExtension Condition="$(SharedFxRID.StartsWith('win'))">.zip</ArchiveExtension>
|
||||
|
||||
<LibPrefix Condition="$([MSBuild]::IsOSPlatform('Linux')) OR $([MSBuild]::IsOSPlatform('OSX'))">lib</LibPrefix>
|
||||
<LibExtension>.so</LibExtension>
|
||||
<LibExtension Condition="$([MSBuild]::IsOSPlatform('Windows'))">.dll</LibExtension>
|
||||
<LibExtension Condition="$([MSBuild]::IsOSPlatform('OSX'))">.dylib</LibExtension>
|
||||
<ExeExtension Condition="$([MSBuild]::IsOSPlatform('Windows'))">.exe</ExeExtension>
|
||||
<SharedFrameworkTargetFramework>netcoreapp3.0</SharedFrameworkTargetFramework>
|
||||
|
||||
<!-- installers -->
|
||||
<SharedFxInstallerName>aspnetcore-runtime</SharedFxInstallerName>
|
||||
<!--
|
||||
This is named aspnetcore-runtime-internal because it only includes Microsoft.AspNetCore.All and is an intermediate file passed off to signing, installer generation, etc.
|
||||
Subsequent build steps will combine this with Microsoft.NETCore.App and produce final tarballs/zips.
|
||||
-->
|
||||
<SharedFxIntermediateArchiveBaseName>$(SharedFxInstallerName)-internal</SharedFxIntermediateArchiveBaseName>
|
||||
<DebConfigInFile>$(_PackagingDir)debian_config.json.in</DebConfigInFile>
|
||||
<PublicCoreFeedPrefix>https://dotnetcli.blob.core.windows.net/dotnet/</PublicCoreFeedPrefix>
|
||||
|
||||
<!-- In an orchestrated build, this may be overriden to other Azure feeds. -->
|
||||
<DotNetAssetRootUrl Condition="'$(DotNetAssetRootUrl)'==''">$(PublicCoreFeedPrefix)</DotNetAssetRootUrl>
|
||||
|
||||
<DotnetRuntimeFileNamePrefix>dotnet-runtime-$(MicrosoftNETCoreAppPackageVersion)</DotnetRuntimeFileNamePrefix>
|
||||
<RuntimeArchiveLinkPrefix>$(DotNetAssetRootUrl)Runtime/$(MicrosoftNETCoreAppPackageVersion)/$(DotnetRuntimeFileNamePrefix)</RuntimeArchiveLinkPrefix>
|
||||
|
||||
<SharedFxIntermediateArchiveFilePrefix>$(_SharedFxSourceDir)$(SharedFxIntermediateArchiveBaseName)-$(PackageVersion)</SharedFxIntermediateArchiveFilePrefix>
|
||||
|
||||
<!-- installer versions -->
|
||||
<!-- CLI would take a dependency such as 'aspnetcore-runtime-M.N >= M.N.P'. Here M.N is the InstallerIdVersion and M.N.P is the InstallerPackageVersion -->
|
||||
<InstallerIdVersion>$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion)</InstallerIdVersion>
|
||||
<InstallerPackageVersion>$(InstallerIdVersion).$(AspNetCorePatchVersion)</InstallerPackageVersion>
|
||||
<!-- Deb installers are versioned as M.N.P~Build following the core-setup convention -->
|
||||
<DebInstallerPackageVersion>$(InstallerPackageVersion)</DebInstallerPackageVersion>
|
||||
<DebInstallerPackageVersion Condition="'$(PackageVersionSuffix)' != ''">$(DebInstallerPackageVersion)~$(PackageVersionSuffix)</DebInstallerPackageVersion>
|
||||
<PackageRevision>1</PackageRevision>
|
||||
<!-- While the revision number of Debian installers must stay at 1, the RPM installers will include the build number in the revision if available -->
|
||||
<RpmPackageRevision>$(PackageRevision)</RpmPackageRevision>
|
||||
<RpmPackageRevision Condition="'$(PackageVersionSuffix)' != ''">0.1.$(PackageVersionSuffix)</RpmPackageRevision>
|
||||
<RpmPackageRevision>$([System.String]::Copy('$(RpmPackageRevision)').Replace('-', '_'))</RpmPackageRevision>
|
||||
|
||||
<!-- installer metadata -->
|
||||
<MaintainerName>Microsoft</MaintainerName>
|
||||
<MaintainerEmail>nugetaspnet@microsoft.com</MaintainerEmail>
|
||||
<Homepage>https://www.asp.net/</Homepage>
|
||||
<InstallRoot>/usr/share/dotnet</InstallRoot>
|
||||
<LicenseType>Apache-2.0</LicenseType>
|
||||
<SharedFxSummary>Microsoft ASP.NET Core $(PackageVersion) Shared Framework</SharedFxSummary>
|
||||
<SharedFxDescription>Shared Framework for hosting of Microsoft ASP.NET Core applications. 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.</SharedFxDescription>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<WindowsSharedFxRIDs Include="win-x64;win-x86"/>
|
||||
<NonWindowsSharedFxRIDs Include="osx-x64" CrossgenSymbols="false" />
|
||||
<NonWindowsSharedFxRIDs Include="linux-musl-x64" />
|
||||
<NonWindowsSharedFxRIDs Include="linux-x64" />
|
||||
<NonWindowsSharedFxRIDs Include="linux-arm" CrossGen="false" />
|
||||
<NonWindowsSharedFxRIDs Include="linux-arm64" CrossGen="false" />
|
||||
<AllSharedFxRIDs Include="@(WindowsSharedFxRIDs);@(NonWindowsSharedFxRIDs)"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,566 @@
|
|||
<Project>
|
||||
<Import Project="SharedFx.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<SharedFxOutputPath>$([MSBuild]::NormalizeDirectory($(ArtifactsDir)))runtime\</SharedFxOutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="GetMetapackageArtifactInfo">
|
||||
<ItemGroup>
|
||||
<_MetapackageProject Include="$(RepositoryRoot)src\Packages\Microsoft.AspNetCore.All\Microsoft.AspNetCore.All.csproj" />
|
||||
<_MetapackageProject Include="$(RepositoryRoot)src\Packages\Microsoft.AspNetCore.App\Microsoft.AspNetCore.App.csproj" />
|
||||
<_MetapackageProject Include="$(RepositoryRoot)src\Packages\Microsoft.AspNetCore.Analyzers\Microsoft.AspNetCore.Analyzers.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<MSBuild Projects="@(_MetapackageProject)"
|
||||
Targets="GetArtifactInfo"
|
||||
Properties="PackageOutputPath=$(BuildDir);BuildNumber=$(BuildNumber);DesignTimeBuild=true;IsFinalBuild=$(IsFinalBuild)">
|
||||
<Output TaskParameter="TargetOutputs" ItemName="ArtifactInfo" />
|
||||
</MSBuild>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Cartesian products in MSBuild are fun :) -->
|
||||
<_SharedFrameworkSymbolsPackage Include="@(SharedFrameworkName)" Condition="'%(AllSharedFxRIDs.CrossgenSymbols)' != 'false' AND '%(AllSharedFxRIDs.Crossgen)' != 'false'">
|
||||
<Rid>%(AllSharedFxRIDs.Identity)</Rid>
|
||||
</_SharedFrameworkSymbolsPackage>
|
||||
<_SharedFrameworkSymbolsPackage Update="@(_SharedFrameworkSymbolsPackage)" PackageId="runtime.%(Rid).%(Identity)" />
|
||||
<ArtifactInfo Include="@(_SharedFrameworkSymbolsPackage->'$(BuildDir)%(PackageId).$(PackageVersion).symbols.nupkg')">
|
||||
<ArtifactType>NuGetSymbolsPackage</ArtifactType>
|
||||
<PackageId>%(_SharedFrameworkSymbolsPackage.PackageId)</PackageId>
|
||||
<Version>$(PackageVersion)</Version>
|
||||
<Category>shipoob</Category>
|
||||
</ArtifactInfo>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="_BuildMetapackage" DependsOnTargets="ResolveRepoInfo">
|
||||
<PropertyGroup>
|
||||
<MetapackageSource>$(_MetapackageSrcRoot)$(MetapackageName)\</MetapackageSource>
|
||||
<MetapackageWorkDirectory>$(_WorkRoot)pkg\$(MetapackageName)\</MetapackageWorkDirectory>
|
||||
<CommonProps />
|
||||
<CommonProps>$(CommonProps);Configuration=$(Configuration)</CommonProps>
|
||||
<CommonProps>$(CommonProps);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)</CommonProps>
|
||||
<CommonProps>$(CommonProps);DotNetBuildOffline=true</CommonProps>
|
||||
<CommonProps>$(CommonProps);AspNetUniverseBuildOffline=true</CommonProps>
|
||||
<CommonProps>$(CommonProps);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp30PackageVersion)</CommonProps>
|
||||
<CommonProps>$(CommonProps);AppMetapackageVersion=$(PackageVersion)</CommonProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<Error
|
||||
Text="Source directory $(MetapackageSource) for $(MetapackageName) does not exist."
|
||||
Condition="!Exists('$(MetapackageSource)')" />
|
||||
|
||||
<ItemGroup>
|
||||
<MetapackageFiles Include="$(MetapackageSource)**\*" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Clear working directory -->
|
||||
<RemoveDir Directories="$(MetapackageWorkDirectory)" />
|
||||
|
||||
<!-- Move to working dir -->
|
||||
<Copy SourceFiles="@(MetapackageFiles)" DestinationFolder="$(MetapackageWorkDirectory)%(RecursiveDir)" />
|
||||
<Copy SourceFiles="$(_MetapackageSrcRoot)Directory.Build.props" DestinationFolder="$(_WorkRoot)" />
|
||||
|
||||
<!-- Add references to project -->
|
||||
<RepoTasks.AddMetapackageReferences
|
||||
ReferencePackagePath="$(MetapackageWorkDirectory)$(MetapackageName).csproj"
|
||||
MetapackageReferenceType="$(MetapackageReferenceType)"
|
||||
DependencyVersionRangeType="$(MetapackageDependencyVersionRangeType)"
|
||||
PackageArtifacts="@(_PackageArtifactSpec)"
|
||||
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)$(MetapackageName).csproj" Targets="Restore" Properties="$(CommonProps);_Target=Restore" />
|
||||
<!-- Pack -->
|
||||
<MSBuild Projects="$(MetapackageWorkDirectory)$(MetapackageName).csproj" Targets="Pack" Properties="$(CommonProps);PackageOutputPath=$(BuildDir)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="BuildMetapackages">
|
||||
<ItemGroup>
|
||||
<_MetapackageBuilderProject Include="$(MSBuildProjectFullPath)">
|
||||
<AdditionalProperties>
|
||||
MetapackageName=Microsoft.AspNetCore.App;
|
||||
MetapackageReferenceType=AppMetapackage;
|
||||
MetapackageDependencyVersionRangeType=MajorMinor
|
||||
</AdditionalProperties>
|
||||
</_MetapackageBuilderProject>
|
||||
|
||||
<_MetapackageBuilderProject Include="$(MSBuildProjectFullPath)">
|
||||
<AdditionalProperties>
|
||||
MetapackageName=Microsoft.AspNetCore.All;
|
||||
MetapackageReferenceType=AllMetapackage;
|
||||
MetapackageDependencyVersionRangeType=Minimum
|
||||
</AdditionalProperties>
|
||||
</_MetapackageBuilderProject>
|
||||
|
||||
<_MetapackageBuilderProject Include="$(MSBuildProjectFullPath)">
|
||||
<AdditionalProperties>
|
||||
MetapackageName=Microsoft.AspNetCore.Analyzers;
|
||||
MetapackageReferenceType=Analyzer;
|
||||
MetapackageDependencyVersionRangeType=Minimum
|
||||
</AdditionalProperties>
|
||||
</_MetapackageBuilderProject>
|
||||
</ItemGroup>
|
||||
|
||||
<MSBuild
|
||||
Projects="@(_MetapackageBuilderProject)"
|
||||
Targets="_BuildMetapackage"
|
||||
BuildInParallel="false" />
|
||||
</Target>
|
||||
|
||||
<Target Name="DefineSharedFxPrerequisites" DependsOnTargets="ResolveCommitHash">
|
||||
<PropertyGroup>
|
||||
<RIDIsAcceptable Condition="'%(AllSharedFxRIDs.Identity)' == '$(SharedFxRID)'">true</RIDIsAcceptable>
|
||||
<CrossGenSharedFx>false</CrossGenSharedFx>
|
||||
<CrossGenSharedFx Condition="'%(AllSharedFxRIDs.Identity)' == '$(SharedFxRID)' AND '%(AllSharedFxRIDs.Crossgen)' != 'false' ">true</CrossGenSharedFx>
|
||||
<CrossGenSharedFxSymbols>false</CrossGenSharedFxSymbols>
|
||||
<CrossGenSharedFxSymbols Condition="'$(CrossGenSharedFx)' != 'false' AND '%(AllSharedFxRIDs.Identity)' == '$(SharedFxRID)' AND '%(AllSharedFxRIDs.CrossgenSymbols)' != 'false' ">true</CrossGenSharedFxSymbols>
|
||||
</PropertyGroup>
|
||||
|
||||
<Error Text=""$(SharedFxRID)" not acceptable as a SharedFxRID, please specify an acceptable value: {@(AllSharedFxRIDs)}." Condition="'$(RIDIsAcceptable)' != 'true'"/>
|
||||
|
||||
<PropertyGroup>
|
||||
<AppSharedFxWorkDirectory>$(_WorkRoot)AppSharedFx\</AppSharedFxWorkDirectory>
|
||||
<AllSharedFxWorkDirectory>$(_WorkRoot)AllSharedFx\</AllSharedFxWorkDirectory>
|
||||
<SharedFxIntermediateOutputPath>$(_WorkRoot)Publish\</SharedFxIntermediateOutputPath>
|
||||
<SharedFxCrossGenDirectory>$(_WorkRoot)CrossGen\</SharedFxCrossGenDirectory>
|
||||
<SharedFxCrossGenSymbolsDirectory>$(_WorkRoot)CrossGenSymbols\</SharedFxCrossGenSymbolsDirectory>
|
||||
<SharedFxCrossGenToolDirectory>$(_WorkRoot)CrossGenTool\</SharedFxCrossGenToolDirectory>
|
||||
<SharedFxCrossGenRspDirectory>$(_WorkRoot)CrossGenRsp\</SharedFxCrossGenRspDirectory>
|
||||
<AppSharedFxPublishDirectory>$(SharedFxIntermediateOutputPath)shared\Microsoft.AspNetCore.App\$(PackageVersion)\</AppSharedFxPublishDirectory>
|
||||
<AllSharedFxPublishDirectory>$(SharedFxIntermediateOutputPath)shared\Microsoft.AspNetCore.All\$(PackageVersion)\</AllSharedFxPublishDirectory>
|
||||
<SharedFxRestoreRid>$(SharedFxRID)</SharedFxRestoreRid>
|
||||
|
||||
<!-- 3B = semicolon in ASCII -->
|
||||
<PathSeparator Condition="'$(PathSeparator)' == ''">:</PathSeparator>
|
||||
<PathSeparator Condition="$(SharedFxRID.StartsWith('win'))">%3B</PathSeparator>
|
||||
|
||||
<CommonSharedFxProps>Configuration=$(Configuration);RuntimeIdentifier=$(SharedFxRestoreRid)</CommonSharedFxProps>
|
||||
<CommonSharedFxProps>$(CommonSharedFxProps);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)</CommonSharedFxProps>
|
||||
<CommonSharedFxProps>$(CommonSharedFxProps);DotNetBuildOffline=true</CommonSharedFxProps>
|
||||
<CommonSharedFxProps>$(CommonSharedFxProps);AspNetUniverseBuildOffline=true</CommonSharedFxProps>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="_PrepareForSharedFx" DependsOnTargets="DefineSharedFxPrerequisites">
|
||||
<PropertyGroup>
|
||||
<RestoreProps>$(CommonSharedFxProps)</RestoreProps>
|
||||
<RestoreProps>$(RestoreProps);SharedFxPackage=$(SharedFxPackage)</RestoreProps>
|
||||
<RestoreProps>$(RestoreProps);SharedFxPackageVersion=$(PackageVersion)</RestoreProps>
|
||||
<RestoreProps>$(RestoreProps);SharedFxBase=$(SharedFxBase)</RestoreProps>
|
||||
<RestoreProps>$(RestoreProps);SharedFxBaseVersion=$(SharedFxBaseVersion)</RestoreProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Copy to working dir -->
|
||||
<ItemGroup>
|
||||
<SharedFxFiles Include="$(_TemplatesDir)SharedFx\**\*" />
|
||||
</ItemGroup>
|
||||
|
||||
<Copy SourceFiles="@(SharedFxFiles)" DestinationFolder="$(SharedFxWorkDirectory)\%(RecursiveDir)" />
|
||||
|
||||
<!-- Set _Target=Restore so the project will be re-evaluated to include Internal.AspNetCore.Sdk MSBuild properties on the next step. -->
|
||||
<MSBuild Projects="$(SharedFxWorkDirectory)SharedFx.csproj"
|
||||
Targets="Restore"
|
||||
Properties="$(RestoreProps);_Target=Restore;RestoreForce=true" />
|
||||
</Target>
|
||||
|
||||
<Target Name="PrepareForSharedFx" DependsOnTargets="DefineSharedFxPrerequisites;ResolveCommitHash">
|
||||
<PropertyGroup>
|
||||
<AppSharedFxProps>RepositoryCommit=$(RepositoryCommit);SharedFxWorkDirectory=$(AppSharedFxWorkDirectory)</AppSharedFxProps>
|
||||
<AppSharedFxProps>$(AppSharedFxProps);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp30PackageVersion)</AppSharedFxProps>
|
||||
<AppSharedFxProps>$(AppSharedFxProps);SharedFxPackage=Microsoft.AspNetCore.App</AppSharedFxProps>
|
||||
<AllSharedFxProps>RepositoryCommit=$(RepositoryCommit);SharedFxWorkDirectory=$(AllSharedFxWorkDirectory)</AllSharedFxProps>
|
||||
<AllSharedFxProps>$(AllSharedFxProps);RuntimeFrameworkVersion=$(MicrosoftNETCoreApp30PackageVersion)</AllSharedFxProps>
|
||||
<AllSharedFxProps>$(AllSharedFxProps);SharedFxPackage=Microsoft.AspNetCore.All</AllSharedFxProps>
|
||||
<AllSharedFxProps>$(AllSharedFxProps);SharedFxDep=Microsoft.AspNetCore.App</AllSharedFxProps>
|
||||
<AllSharedFxProps>$(AllSharedFxProps);SharedFxDepVersion=$(PackageVersion)</AllSharedFxProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Clear working directory -->
|
||||
<!-- <RemoveDir Directories="$(_WorkRoot)" /> -->
|
||||
|
||||
<Copy SourceFiles="$(_MetapackageSrcRoot)Directory.Build.props" DestinationFolder="$(_WorkRoot)" />
|
||||
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_PrepareForSharedFx" Properties="$(AppSharedFxProps)" />
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_PrepareForSharedFx" Properties="$(AllSharedFxProps)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_ResolveSharedFxFiles" DependsOnTargets="DefineSharedFxPrerequisites">
|
||||
<ItemGroup>
|
||||
<VersionLines Include="$(RepositoryCommit)" />
|
||||
<VersionLines Include="$(PackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Publish -->
|
||||
<MSBuild Projects="$(SharedFxWorkDirectory)SharedFx.csproj"
|
||||
Targets="Publish"
|
||||
Properties="$(CommonSharedFxProps);GenerateRuntimeConfigurationFiles=true;SelfContained=false;PublishDir=$(SharedFxPublishDirectory)" />
|
||||
|
||||
<!-- Clean deps.json -->
|
||||
<RepoTasks.TrimDeps DepsFiles="$(SharedFxPublishDirectory)/SharedFx.deps.json" />
|
||||
|
||||
<!-- Clean up artifacts that publish generates which we don't need -->
|
||||
<ItemGroup>
|
||||
<ToDelete Include="$(SharedFxPublishDirectory)\SharedFx" />
|
||||
<ToDelete Include="$(SharedFxPublishDirectory)\SharedFx.dll" />
|
||||
<ToDelete Include="$(SharedFxPublishDirectory)\SharedFx.pdb" />
|
||||
</ItemGroup>
|
||||
|
||||
<Delete Files="@(ToDelete)" />
|
||||
|
||||
<!-- Rename deps file -->
|
||||
<Move SourceFiles="$(SharedFxPublishDirectory)\SharedFx.deps.json"
|
||||
DestinationFiles="$(SharedFxPublishDirectory)\$(SharedFxPackage).deps.json" />
|
||||
|
||||
<!-- Rename runtimeconfig.json file -->
|
||||
<Move SourceFiles="$(SharedFxPublishDirectory)\SharedFx.runtimeconfig.json"
|
||||
DestinationFiles="$(SharedFxPublishDirectory)\$(SharedFxPackage).runtimeconfig.json" />
|
||||
|
||||
<!-- Generate Runtime Graph -->
|
||||
<PropertyGroup>
|
||||
<RuntimeGraphGeneratorRuntime Condition="$([MSBuild]::IsOSPlatform('Windows'))">win</RuntimeGraphGeneratorRuntime>
|
||||
<RuntimeGraphGeneratorRuntime Condition="$([MSBuild]::IsOSPlatform('Linux'))">linux</RuntimeGraphGeneratorRuntime>
|
||||
<RuntimeGraphGeneratorRuntime Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx</RuntimeGraphGeneratorRuntime>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<SharedFxAssetsFile Include="$(SharedFxWorkDirectory)**\project.assets.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ProcessSharedFrameworkDeps
|
||||
AssetsFilePath="@(SharedFxAssetsFile)"
|
||||
DepsFilePath="$(SharedFxPublishDirectory)\$(SharedFxPackage).deps.json"
|
||||
Runtime="$(RuntimeGraphGeneratorRuntime)" />
|
||||
|
||||
<!-- Generate .version file -->
|
||||
<WriteLinesToFile
|
||||
File="$(SharedFxPublishDirectory)\.version"
|
||||
Lines="@(VersionLines)"
|
||||
Overwrite="true" />
|
||||
</Target>
|
||||
|
||||
<Target Name="ResolveSharedFxFiles" DependsOnTargets="PrepareForSharedFx">
|
||||
<PropertyGroup>
|
||||
<AppSharedFxProps>SharedFxPackage=Microsoft.AspNetCore.App</AppSharedFxProps>
|
||||
<AppSharedFxProps>$(AppSharedFxProps);SharedFxWorkDirectory=$(AppSharedFxWorkDirectory)</AppSharedFxProps>
|
||||
<AppSharedFxProps>$(AppSharedFxProps);SharedFxPublishDirectory=$(AppSharedFxPublishDirectory)</AppSharedFxProps>
|
||||
<AllSharedFxProps>SharedFxPackage=Microsoft.AspNetCore.All</AllSharedFxProps>
|
||||
<AllSharedFxProps>$(AllSharedFxProps);SharedFxWorkDirectory=$(AllSharedFxWorkDirectory)</AllSharedFxProps>
|
||||
<AllSharedFxProps>$(AllSharedFxProps);SharedFxPublishDirectory=$(AllSharedFxPublishDirectory)</AllSharedFxProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_ResolveSharedFxFiles" Properties="$(AppSharedFxProps)" />
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_ResolveSharedFxFiles" Properties="$(AllSharedFxProps)" />
|
||||
|
||||
<MakeDir Directories="$(SharedFxOutputPath)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="PrepareForCrossGen" DependsOnTargets="PrepareForSharedFx;ResolveSharedFxFiles">
|
||||
<PropertyGroup>
|
||||
<RuntimePackageName>Microsoft.NETCore.App</RuntimePackageName>
|
||||
<CrossGenTool>crossgen</CrossGenTool>
|
||||
<CrossGenTool Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(CrossGenTool).exe</CrossGenTool>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Determine runtime location (via .App shared framework) -->
|
||||
<MSBuild Projects="$(AppSharedFxWorkDirectory)SharedFx.csproj" Targets="GetPackageDefinitions" >
|
||||
<Output TaskParameter="TargetOutputs" ItemName="PackageDefinitions" />
|
||||
</MSBuild>
|
||||
|
||||
<ItemGroup>
|
||||
<RuntimePackage Include="@(PackageDefinitions)" Condition="$([System.String]::new('%(PackageDefinitions.Name)').Contains('runtime')) AND $([System.String]::new('%(PackageDefinitions.Name)').Contains('$(RuntimePackageName)'))" />
|
||||
<RuntimePackageFiles Include="%(RuntimePackage.ResolvedPath)\runtimes\**\*" />
|
||||
<CrossGenToolFile Include="%(RuntimePackage.ResolvedPath)\**\$(CrossGenTool)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="Could not identify the runtime package for $(SharedFXRid)" Condition="@(RuntimePackage->Count()) == 0" />
|
||||
|
||||
<!-- Create tool directory with crossgen executable and runtime assemblies -->
|
||||
<Copy SourceFiles="@(RuntimePackageFiles);@(CrossGenToolFile)" DestinationFolder="$(SharedFxCrossGenToolDirectory)"/>
|
||||
|
||||
<ItemGroup>
|
||||
<ClrJitAssembly Include="$(SharedFxCrossGenToolDirectory)\**\$(LibPrefix)clrjit$(LibExtension)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="Expected to resolve a single runtime package but instead resolved @(RuntimePackage->Count()) with identities %(RuntimePackage.Identity)" Condition="'@(RuntimePackage->Count())' != 1" />
|
||||
<Error Text="Could not find crossgen in %(RuntimePackage.ResolvedPath)" Condition="@(CrossGenToolFile->Count()) == 0" />
|
||||
<Error Text="Expected to resolve a single clr jit assembly but instead resolved @(ClrJitAssembly->Count()) with identities %(ClrJitAssembly.Identity)" Condition="'@(ClrJitAssembly->Count())' != 1" />
|
||||
|
||||
<!-- Gather details on published assemblies -->
|
||||
<MSBuild Projects="$(AppSharedFxWorkDirectory)SharedFx.csproj"
|
||||
Targets="GetPublishAssemblies"
|
||||
Properties="RuntimeIdentifier=$(SharedFxRestoreRid);SelfContained=false" >
|
||||
<Output TaskParameter="TargetOutputs" ItemName="AppPublishAssemblies" />
|
||||
</MSBuild>
|
||||
<MSBuild Projects="$(AllSharedFxWorkDirectory)SharedFx.csproj"
|
||||
Targets="GetPublishAssemblies"
|
||||
Properties="RuntimeIdentifier=$(SharedFxRestoreRid);SelfContained=false" >
|
||||
<Output TaskParameter="TargetOutputs" ItemName="AllPublishAssemblies" />
|
||||
</MSBuild>
|
||||
|
||||
<ItemGroup>
|
||||
<IgnoredAssemblies Include="@(AppPublishAssemblies);@(AllPublishAssemblies)" Condition="'%(AssetType)' == 'native' OR '%(AssetType)' == 'resources'" />
|
||||
<_AppRuntimeAssemblies Include="@(AppPublishAssemblies)" Condition="'%(AssetType)' == 'runtime'">
|
||||
<SymbolsPackageFilename>%(PackageName).%(PackageVersion).symbols.nupkg</SymbolsPackageFilename>
|
||||
<PortablePDB>%(RootDir)%(Directory)%(Filename).pdb</PortablePDB>
|
||||
</_AppRuntimeAssemblies>
|
||||
<_AllRuntimeAssemblies Include="@(AllPublishAssemblies)" Exclude="@(_AppRuntimeAssemblies)" Condition="'%(AssetType)' == 'runtime'">
|
||||
<SymbolsPackageFilename>%(PackageName).%(PackageVersion).symbols.nupkg</SymbolsPackageFilename>
|
||||
<PortablePDB>%(RootDir)%(Directory)%(Filename).pdb</PortablePDB>
|
||||
</_AllRuntimeAssemblies>
|
||||
<OtherAssemblies Include="@(AppPublishAssemblies);@(AllPublishAssemblies)" Exclude="@(IgnoredAssemblies);@(_AppRuntimeAssemblies);@(_AllRuntimeAssemblies)" />
|
||||
<_AssembliesToCrossgen Include="$(SharedFxIntermediateOutputPath)**\*.dll" />
|
||||
</ItemGroup>
|
||||
|
||||
<RepoTasks.ResolveSymbolsRecursivePath Symbols="@(_AppRuntimeAssemblies)">
|
||||
<Output TaskParameter="Symbols" ItemName="AppRuntimeAssemblies" />
|
||||
</RepoTasks.ResolveSymbolsRecursivePath>
|
||||
<RepoTasks.ResolveSymbolsRecursivePath Symbols="@(_AllRuntimeAssemblies)">
|
||||
<Output TaskParameter="Symbols" ItemName="AllRuntimeAssemblies" />
|
||||
</RepoTasks.ResolveSymbolsRecursivePath>
|
||||
|
||||
<Error Text="Unaccounted shared framework assemblies found: @(OtherAssemblies). Assemblies must be included as runtime assemblies or marked as ignored." Condition="'@(OtherAssemblies)' != ''" />
|
||||
|
||||
<!-- Compute the intersection of crossgen candidates and native/resources assemblies as the set of assemblies to skip crossgen -->
|
||||
<CreateItem Include="@(_AssembliesToCrossgen)" Condition="'%(Filename)' != ''and '@(IgnoredAssemblies)' != ''">
|
||||
<Output TaskParameter="Include" ItemName="AssembliesToRemove"/>
|
||||
</CreateItem>
|
||||
|
||||
<!-- Resolve list of assemblies to crossgen -->
|
||||
<ItemGroup>
|
||||
<AssembliesToCrossgen Include="@(_AssembliesToCrossgen)">
|
||||
<Source>%(FullPath)</Source>
|
||||
<Rsp>$(SharedFxCrossGenRspDirectory)%(RecursiveDir)%(Filename).rsp</Rsp>
|
||||
<SymbolsRsp>$(SharedFxCrossGenRspDirectory)%(RecursiveDir)%(Filename).symbols.rsp</SymbolsRsp>
|
||||
<Destination>$(SharedFxCrossGenDirectory)%(RecursiveDir)%(Filename)%(Extension)</Destination>
|
||||
<Symbols>$(SharedFxCrossGenDirectory)%(RecursiveDir)</Symbols>
|
||||
</AssembliesToCrossgen>
|
||||
<AssembliesToCrossgen Remove="@(AssembliesToRemove)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Compute the intersection of runtime assemblies and assemblies to crossgen to resolve the set of portablePDBs to publish -->
|
||||
<CreateItem Include="@(AppRuntimeAssemblies)" Condition="'%(Filename)' != ''and '@(AssembliesToCrossgen)' != ''">
|
||||
<Output TaskParameter="Include" ItemName="AppPortablePDBsToPublish"/>
|
||||
</CreateItem>
|
||||
<CreateItem Include="@(AllRuntimeAssemblies)" Condition="'%(Filename)' != ''and '@(AssembliesToCrossgen)' != ''">
|
||||
<Output TaskParameter="Include" ItemName="AllPortablePDBsToPublish"/>
|
||||
</CreateItem>
|
||||
</Target>
|
||||
|
||||
<Target Name="CrossGenAssemblies"
|
||||
DependsOnTargets="PrepareForCrossGen"
|
||||
Inputs="@(AssembliesToCrossgen)"
|
||||
Outputs="%(AssembliesToCrossgen.Destination)">
|
||||
<ItemGroup>
|
||||
<CrossGenArgs Include="-nologo" />
|
||||
<CrossGenArgs Include="-readytorun" />
|
||||
<CrossGenArgs Include="-in %(AssembliesToCrossgen.Source)" />
|
||||
<CrossGenArgs Include="-out %(AssembliesToCrossgen.Destination)" />
|
||||
<CrossGenArgs Include="-platform_assemblies_paths $(SharedFxCrossGenToolDirectory)$(PathSeparator)$(AppSharedFxPublishDirectory)$(PathSeparator)$(AllSharedFxPublishDirectory)" />
|
||||
<CrossGenArgs Include="-JITPath %(ClrJitAssembly.FullPath)" />
|
||||
</ItemGroup>
|
||||
|
||||
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName('%(AssembliesToCrossgen.Rsp)'))" />
|
||||
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName('%(AssembliesToCrossgen.Destination)'))" />
|
||||
<WriteLinesToFile File="%(AssembliesToCrossgen.Rsp)" Lines="@(CrossGenArgs)" Overwrite="true" />
|
||||
|
||||
<Copy Condition="'$(CrossGenSharedFx)' == 'false'"
|
||||
SourceFiles="%(AssembliesToCrossgen.Source)"
|
||||
DestinationFiles="%(AssembliesToCrossgen.Destination)" />
|
||||
<Exec Condition="'$(CrossGenSharedFx)' != 'false'"
|
||||
Command="$(SharedFxCrossGenToolDirectory)$(CrossGenTool) @%(AssembliesToCrossgen.Rsp)"
|
||||
EnvironmentVariables="COMPlus_PartialNGen=0" />
|
||||
</Target>
|
||||
|
||||
<Target Name="CrossGenSymbols"
|
||||
Condition=" '$(CrossGenSharedFxSymbols)' != 'false' "
|
||||
DependsOnTargets="CrossGenAssemblies"
|
||||
Inputs="@(AssembliesToCrossgen)"
|
||||
Outputs="%(AssembliesToCrossgen.SymbolsRsp)">
|
||||
<PropertyGroup>
|
||||
<CrossGenSymbolsType>CreatePerfMap</CrossGenSymbolsType>
|
||||
<CrossGenSymbolsType Condition="'$(OS)' == 'Windows_NT'">CreatePDB</CrossGenSymbolsType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<CrossGenSymbolsArgs Include="-nologo" />
|
||||
<CrossGenSymbolsArgs Include="-readytorun" />
|
||||
<CrossGenSymbolsArgs Include="-platform_assemblies_paths $(SharedFxCrossGenToolDirectory)$(PathSeparator)$(AppSharedFxPublishDirectory)$(PathSeparator)$(AllSharedFxPublishDirectory)" />
|
||||
<CrossGenSymbolsArgs Include="-$(CrossGenSymbolsType)" />
|
||||
<CrossGenSymbolsArgs Include="%(AssembliesToCrossgen.Symbols)" />
|
||||
<CrossGenSymbolsArgs Include="%(AssembliesToCrossgen.Destination)" />
|
||||
</ItemGroup>
|
||||
|
||||
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName('%(AssembliesToCrossgen.Symbols)'))" />
|
||||
<WriteLinesToFile File="%(AssembliesToCrossgen.SymbolsRsp)" Lines="@(CrossGenSymbolsArgs)" Overwrite="true" />
|
||||
|
||||
<Exec Command="$(SharedFxCrossGenToolDirectory)$(CrossGenTool) @%(AssembliesToCrossgen.SymbolsRsp)" EnvironmentVariables="COMPlus_PartialNGen=0" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_BuildSharedFxSymbols">
|
||||
<PropertyGroup>
|
||||
<SymbolsPackageId>runtime.$(SharedFxRID).$(SymbolsNuspecIdSuffix)</SymbolsPackageId>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<_SymbolFiles Include="$(SymbolsWorkDir)**\*.pdb;$(SymbolsWorkDir)**\*.map;$(SymbolsWorkDir)**\*.dll" />
|
||||
<SymbolFiles Include="@(_SymbolFiles)">
|
||||
<PackagePath>%(RecursiveDir)%(Filename)%(Extension)</PackagePath>
|
||||
</SymbolFiles>
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Create Layout -->
|
||||
<Copy
|
||||
SourceFiles="$(_TemplatesDir)SharedFxSymbols\SharedFrameworkSymbols.nuspec"
|
||||
DestinationFiles="$(SymbolsWorkDir)$(SymbolsPackageId).nuspec"
|
||||
OverwriteReadOnlyFiles="True" />
|
||||
|
||||
<!-- Produce symbols nupkg -->
|
||||
<PackNuspec NuspecPath="$(SymbolsWorkDir)$(SymbolsPackageId).nuspec"
|
||||
OutputPath="$([MSBuild]::NormalizeDirectory($(ArtifactsDir)))symbols\$(SymbolsPackageId).$(PackageVersion).symbols.nupkg"
|
||||
Properties="version=$(PackageVersion);id=$(SymbolsPackageId);description=$(Description);Configuration=$(Configuration)"
|
||||
Overwrite="true"
|
||||
PackageFiles="@(SymbolFiles)"
|
||||
BasePath="$(SymbolsWorkDir)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="PackSharedFx" DependsOnTargets="DefineSharedFxPrerequisites" >
|
||||
<PropertyGroup>
|
||||
<AppSharedFxCrossgenDirectory>$(SharedFxCrossGenDirectory)shared\Microsoft.AspNetCore.App\$(PackageVersion)\</AppSharedFxCrossgenDirectory>
|
||||
<AllSharedFxCrossgenDirectory>$(SharedFxCrossGenDirectory)shared\Microsoft.AspNetCore.All\$(PackageVersion)\</AllSharedFxCrossgenDirectory>
|
||||
<AppSharedFxSymbolsDirectory>$(_WorkRoot)Symbols\Microsoft.AspNetCore.App\</AppSharedFxSymbolsDirectory>
|
||||
<AllSharedFxSymbolsDirectory>$(_WorkRoot)Symbols\Microsoft.AspNetCore.All\</AllSharedFxSymbolsDirectory>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<AppCrossGenOutput Include="$(AppSharedFxCrossgenDirectory)**\*.dll" />
|
||||
<AllCrossGenOutput Include="$(AllSharedFxCrossgenDirectory)**\*.dll" />
|
||||
<AppCrossGenSymbols Include="$(AppSharedFxCrossgenDirectory)**\*" Exclude="@(AppCrossGenOutput)" />
|
||||
<AllCrossGenSymbols Include="$(AllSharedFxCrossgenDirectory)**\*" Exclude="@(AllCrossGenOutput)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Extract symbols package and copy over PDBs -->
|
||||
<UnzipArchive
|
||||
File="$(_SymbolsSourceDir)%(AppPortablePDBsToPublish.SymbolsPackageFilename)"
|
||||
Destination="$(_WorkRoot)SymbolsPackages\%(AppPortablePDBsToPublish.SymbolsPackageFilename)"
|
||||
Condition="Exists('$(_SymbolsSourceDir)%(AppPortablePDBsToPublish.SymbolsPackageFilename)')" />
|
||||
<UnzipArchive
|
||||
File="$(_SymbolsSourceDir)%(AllPortablePDBsToPublish.SymbolsPackageFilename)"
|
||||
Destination="$(_WorkRoot)SymbolsPackages\%(AllPortablePDBsToPublish.SymbolsPackageFilename)"
|
||||
Condition="Exists('$(_SymbolsSourceDir)%(AllPortablePDBsToPublish.SymbolsPackageFilename)')" />
|
||||
<Copy
|
||||
SourceFiles="$(_WorkRoot)SymbolsPackages\%(AppPortablePDBsToPublish.SymbolsPackageFilename)%(AppPortablePDBsToPublish.SymbolsRecursivePath)"
|
||||
DestinationFolder="$(AppSharedFxSymbolsDirectory)runtimes\$(SharedFxRID)\lib\$(SharedFrameworkTargetFramework)"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
Condition="Exists('$(_WorkRoot)SymbolsPackages\%(AppPortablePDBsToPublish.SymbolsPackageFilename)\%(AppPortablePDBsToPublish.SymbolsRecursivePath)')" />
|
||||
<Copy
|
||||
SourceFiles="$(_WorkRoot)SymbolsPackages\%(AllPortablePDBsToPublish.SymbolsPackageFilename)%(AllPortablePDBsToPublish.SymbolsRecursivePath)"
|
||||
DestinationFolder="$(AllSharedFxSymbolsDirectory)runtimes\$(SharedFxRID)\lib\$(SharedFrameworkTargetFramework)"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
Condition="Exists('$(_WorkRoot)SymbolsPackages\%(AllPortablePDBsToPublish.SymbolsPackageFilename)\%(AllPortablePDBsToPublish.SymbolsRecursivePath)')" />
|
||||
|
||||
<!-- Copy over DLLs and PDBs -->
|
||||
<Copy
|
||||
SourceFiles="%(AppPortablePDBsToPublish.PortablePDB)"
|
||||
DestinationFolder="$(AppSharedFxSymbolsDirectory)runtimes\$(SharedFxRID)\lib\$(SharedFrameworkTargetFramework)"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
Condition="Exists('%(AppPortablePDBsToPublish.PortablePDB)')" />
|
||||
<Copy
|
||||
SourceFiles="%(AllPortablePDBsToPublish.PortablePDB)"
|
||||
DestinationFolder="$(AllSharedFxSymbolsDirectory)runtimes\$(SharedFxRID)\lib\$(SharedFrameworkTargetFramework)"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
Condition="Exists('%(AllPortablePDBsToPublish.PortablePDB)')" />
|
||||
<Copy
|
||||
SourceFiles="@(AppCrossGenSymbols)"
|
||||
DestinationFolder="$(AppSharedFxSymbolsDirectory)runtimes\$(SharedFxRID)\lib\$(SharedFrameworkTargetFramework)"
|
||||
OverwriteReadOnlyFiles="True" />
|
||||
<Copy
|
||||
SourceFiles="@(AllCrossGenSymbols)"
|
||||
DestinationFolder="$(AllSharedFxSymbolsDirectory)runtimes\$(SharedFxRID)\lib\$(SharedFrameworkTargetFramework)"
|
||||
OverwriteReadOnlyFiles="True" />
|
||||
<Copy
|
||||
SourceFiles="$(AppSharedFxCrossgenDirectory)%(AppCrossGenOutput.RecursiveDir)%(AppCrossGenOutput.FileName)%(AppCrossGenOutput.Extension)"
|
||||
DestinationFolder="$(AppSharedFxSymbolsDirectory)runtimes\$(SharedFxRID)\lib\$(SharedFrameworkTargetFramework)"
|
||||
OverwriteReadOnlyFiles="True" />
|
||||
<Copy
|
||||
SourceFiles="$(AllSharedFxCrossgenDirectory)%(AllCrossGenOutput.RecursiveDir)%(AllCrossGenOutput.FileName)%(AllCrossGenOutput.Extension)"
|
||||
DestinationFolder="$(AllSharedFxSymbolsDirectory)runtimes\$(SharedFxRID)\lib\$(SharedFrameworkTargetFramework)"
|
||||
OverwriteReadOnlyFiles="True" />
|
||||
|
||||
<!-- Create symbols nupkg -->
|
||||
<PropertyGroup>
|
||||
<AppSymbolsArguments>SymbolsWorkDir=$(AppSharedFxSymbolsDirectory)</AppSymbolsArguments>
|
||||
<AppSymbolsArguments>$(AppSymbolsArguments);SymbolsNuspecIdSuffix=Microsoft.AspNetCore.App</AppSymbolsArguments>
|
||||
<AppSymbolsArguments>$(AppSymbolsArguments);Description=Symbol packages for Microsoft.AspNetCore.App shared framework</AppSymbolsArguments>
|
||||
<AllSymbolsArguments>SymbolsWorkDir=$(AllSharedFxSymbolsDirectory)</AllSymbolsArguments>
|
||||
<AllSymbolsArguments>$(AllSymbolsArguments);SymbolsNuspecIdSuffix=Microsoft.AspNetCore.All</AllSymbolsArguments>
|
||||
<AllSymbolsArguments>$(AllSymbolsArguments);Description=Symbol packages for Microsoft.AspNetCore.All shared framework</AllSymbolsArguments>
|
||||
</PropertyGroup>
|
||||
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildSharedFxSymbols" Properties="$(AppSymbolsArguments)" />
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildSharedFxSymbols" Properties="$(AllSymbolsArguments)" />
|
||||
|
||||
<!-- Replace assemblies with crossgen output -->
|
||||
<Copy
|
||||
SourceFiles="$(AppSharedFxCrossgenDirectory)%(AppCrossGenOutput.RecursiveDir)%(AppCrossGenOutput.FileName)%(AppCrossGenOutput.Extension)"
|
||||
DestinationFiles="$(AppSharedFxPublishDirectory)%(AppCrossGenOutput.RecursiveDir)%(AppCrossGenOutput.FileName)%(AppCrossGenOutput.Extension)"
|
||||
OverwriteReadOnlyFiles="True" />
|
||||
<Copy
|
||||
SourceFiles="$(AllSharedFxCrossgenDirectory)%(AllCrossGenOutput.RecursiveDir)%(AllCrossGenOutput.FileName)%(AllCrossGenOutput.Extension)"
|
||||
DestinationFiles="$(AllSharedFxPublishDirectory)%(AllCrossGenOutput.RecursiveDir)%(AllCrossGenOutput.FileName)%(AllCrossGenOutput.Extension)"
|
||||
OverwriteReadOnlyFiles="True" />
|
||||
|
||||
<ItemGroup>
|
||||
<OutputZipFiles Include="$(SharedFxIntermediateOutputPath)**\*" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Create internal archive file -->
|
||||
<Exec Condition="'$(ArchiveExtension)' == '.tar.gz'"
|
||||
Command="tar -czf $(SharedFxOutputPath)$(SharedFxIntermediateArchiveBaseName)-$(PackageVersion)-$(SharedFxRID)$(ArchiveExtension) -C $(SharedFxIntermediateOutputPath) ." />
|
||||
<ZipArchive Condition="'$(ArchiveExtension)' == '.zip'"
|
||||
File="$(SharedFxOutputPath)$(SharedFxIntermediateArchiveBaseName)-$(PackageVersion)-$(SharedFxRID).zip"
|
||||
SourceFiles="@(OutputZipFiles)"
|
||||
WorkingDirectory="$(SharedFxIntermediateOutputPath)"
|
||||
Overwrite="true"/>
|
||||
</Target>
|
||||
|
||||
<Target Name="BuildSharedFx" DependsOnTargets="GeneratePropsFiles;ResolveSharedFxFiles;CrossGenAssemblies;CrossGenSymbols;PackSharedFx;TestSharedFx"/>
|
||||
|
||||
<Target Name="TestSharedFx" DependsOnTargets="GeneratePropsFiles;DefineSharedFxPrerequisites;ResolveCommitHash;InstallDotNet">
|
||||
<PropertyGroup>
|
||||
<UnitTestFxProject>$(RepositoryRoot)\test\SharedFx.UnitTests\SharedFx.UnitTests.csproj</UnitTestFxProject>
|
||||
|
||||
<!-- The file path to the log file, from within the container -->
|
||||
<UnitTestFxTrxLogFile>$(LogOutputDir)SharedFx-UnitTests-$(Version).trx</UnitTestFxTrxLogFile>
|
||||
<!-- The trx file path from the perspective of the TeamCity agent -->
|
||||
<UnitTestFxTrxPhysicalFilePath>$(UnitTestFxTrxLogFile)</UnitTestFxTrxPhysicalFilePath>
|
||||
<UnitTestFxTrxPhysicalFilePath Condition="'$(HostMachineRepositoryRoot)' != ''">$(HostMachineRepositoryRoot)/artifacts/logs/SharedFx-UnitTests.trx</UnitTestFxTrxPhysicalFilePath>
|
||||
|
||||
<UnitTestFxTestProps>
|
||||
DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);
|
||||
DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath);
|
||||
SharedFxOutputPath=$(SharedFxIntermediateOutputPath);
|
||||
RepositoryCommit=$(RepositoryCommit);
|
||||
VSTestLogger=$([MSBuild]::Escape('trx;LogFileName=$(UnitTestFxTrxLogFile)'));
|
||||
SharedFxRuntimeIdentifier=$(SharedFXRid)
|
||||
</UnitTestFxTestProps>
|
||||
</PropertyGroup>
|
||||
<MSBuild Projects="$(UnitTestFxProject)" Targets="Restore" Properties="_Dummy=restore;$(UnitTestFxTestProps)" />
|
||||
<MSBuild Projects="$(UnitTestFxProject)" Targets="Build" Properties="$(UnitTestFxTestProps)">
|
||||
<Output TaskParameter="TargetOutputs" ItemName="SharedFxTestAssembly" />
|
||||
</MSBuild>
|
||||
<RunDotNet Arguments="vstest;
|
||||
--Framework:%(TargetFrameworkIdentifier),Version=v%(TargetFrameworkVersion);
|
||||
--Logger:$([MSBuild]::Escape('trx;LogFileName=$(UnitTestFxTrxLogFile)'));
|
||||
%(SharedFxTestAssembly.Identity);
|
||||
--;RunConfiguration.NoAutoReporters=true" IgnoreExitCode="true">
|
||||
<Output TaskParameter="ExitCode" PropertyName="VsTestExitCode" />
|
||||
</RunDotNet>
|
||||
|
||||
<Message Text="##teamcity[importData type='vstest' path='$(UnitTestFxTrxPhysicalFilePath)']"
|
||||
Importance="High"
|
||||
Condition="'$(TEAMCITY_VERSION)' != '' AND Exists('$(UnitTestFxTrxLogFile)')" />
|
||||
<Error Text="SharedFx.UnitTests failed with exit code '$(VsTestExitCode)'." Condition=" $(VsTestExitCode) != 0 " />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,253 @@
|
|||
<Project>
|
||||
<Target Name="BuildInstallers" DependsOnTargets="GenerateCumulativeArchives;GenerateRpms;GenerateDebs" />
|
||||
|
||||
<Target Name="_EnsureInstallerPrerequisites">
|
||||
<MakeDir Directories="$(_InstallersOutputDir)" />
|
||||
|
||||
<!-- Check Docker server OS -->
|
||||
<Exec Command="docker version -f "{{.Server.Os}}"" StandardOutputImportance="Normal" ConsoleToMSBuild="true">
|
||||
<Output TaskParameter="ConsoleOutput" PropertyName="DockerHostOS" />
|
||||
</Exec>
|
||||
|
||||
<Error
|
||||
Text="Docker host must be using Linux containers."
|
||||
Condition="'$(DockerHostOS)' != 'linux'"/>
|
||||
<Error
|
||||
Text="Expected archive missing at $(SharedFxIntermediateArchiveFilePrefix)-%(WindowsSharedFxRIDs.Identity).zip."
|
||||
Condition="!Exists('$(SharedFxIntermediateArchiveFilePrefix)-%(WindowsSharedFxRIDs.Identity).zip')" />
|
||||
<Error
|
||||
Text="Expected archive missing at $(SharedFxIntermediateArchiveFilePrefix)-%(NonWindowsSharedFxRIDs.Identity).tar.gz."
|
||||
Condition="!Exists('$(SharedFxIntermediateArchiveFilePrefix)-%(NonWindowsSharedFxRIDs.Identity).tar.gz')" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_DownloadInstallers">
|
||||
<!-- Download dotnet installers -->
|
||||
<MakeDir Directories="$(_InstallerSourceDir)" />
|
||||
<DownloadFile
|
||||
SourceUrl="$(RuntimeArchiveLinkPrefix)-%(WindowsSharedFxRIDs.Identity).zip$(DotNetAssetRootAccessTokenSuffix)"
|
||||
DestinationFolder="$(_InstallerSourceDir)"
|
||||
DestinationFileName="$(DotnetRuntimeFileNamePrefix)-%(WindowsSharedFxRIDs.Identity).zip"
|
||||
Condition="!Exists('$(_InstallerSourceDir)$(DotnetRuntimeFileNamePrefix)-%(WindowsSharedFxRIDs.Identity).zip')" />
|
||||
<DownloadFile
|
||||
SourceUrl="$(RuntimeArchiveLinkPrefix)-%(NonWindowsSharedFxRIDs.Identity).tar.gz$(DotNetAssetRootAccessTokenSuffix)"
|
||||
DestinationFolder="$(_InstallerSourceDir)"
|
||||
DestinationFileName="$(DotnetRuntimeFileNamePrefix)-%(NonWindowsSharedFxRIDs.Identity).tar.gz"
|
||||
Condition="!Exists('$(_InstallerSourceDir)$(DotnetRuntimeFileNamePrefix)-%(NonWindowsSharedFxRIDs.Identity).tar.gz')" />
|
||||
</Target>
|
||||
|
||||
<Target Name="_GenerateCumulativeArchive">
|
||||
<PropertyGroup>
|
||||
<ArchiveExtension>.tar.gz</ArchiveExtension>
|
||||
<ArchiveExtension Condition="$(SharedFxPlatform.StartsWith('win'))">.zip</ArchiveExtension>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Clear working directory -->
|
||||
<RemoveDir Directories="$(_WorkRoot)" />
|
||||
<MakeDir Directories="$(_WorkRoot)" />
|
||||
|
||||
<!-- Create layout: Aspnet Runtime -->
|
||||
<Exec
|
||||
Command="tar -xzf $(SharedFxIntermediateArchiveFilePrefix)-$(SharedFxPlatform)$(ArchiveExtension) -C $(_WorkRoot)"
|
||||
Condition="'$(ArchiveExtension)' == '.tar.gz'"/>
|
||||
<Exec
|
||||
Command="tar -xzf $(_InstallerSourceDir)$(DotnetRuntimeFileNamePrefix)-$(SharedFxPlatform)$(ArchiveExtension) -C $(_WorkRoot)"
|
||||
Condition="'$(ArchiveExtension)' == '.tar.gz'"/>
|
||||
<UnzipArchive
|
||||
File="$(SharedFxIntermediateArchiveFilePrefix)-$(SharedFxPlatform)$(ArchiveExtension)"
|
||||
Destination="$(_WorkRoot)"
|
||||
Condition="'$(ArchiveExtension)' == '.zip'" />
|
||||
<UnzipArchive
|
||||
File="$(_InstallerSourceDir)$(DotnetRuntimeFileNamePrefix)-$(SharedFxPlatform)$(ArchiveExtension)"
|
||||
Destination="$(_WorkRoot)"
|
||||
Condition="'$(ArchiveExtension)' == '.zip'" />
|
||||
|
||||
<ItemGroup>
|
||||
<SharedFxArchiveFiles Include="$(_WorkRoot)**\*" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Create Aspnet Runtime archive -->
|
||||
<Exec
|
||||
Command="tar -czf $(_InstallersOutputDir)$(SharedFxInstallerName)-$(PackageVersion)-$(SharedFxPlatform)$(ArchiveExtension) -C $(_WorkRoot) ."
|
||||
Condition="'$(ArchiveExtension)' == '.tar.gz'"/>
|
||||
<ZipArchive
|
||||
File="$(_InstallersOutputDir)$(SharedFxInstallerName)-$(PackageVersion)-$(SharedFxPlatform)$(ArchiveExtension)"
|
||||
SourceFiles="@(SharedFxArchiveFiles)"
|
||||
WorkingDirectory="$(_WorkRoot)"
|
||||
Overwrite="true"
|
||||
Condition="'$(ArchiveExtension)' == '.zip'"/>
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateCumulativeArchives" DependsOnTargets="_EnsureInstallerPrerequisites;_DownloadInstallers">
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateCumulativeArchive" Properties="SharedFxPlatform=%(AllSharedFxRIDs.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 $(SharedFxArchive) -C $(_WorkRoot)package_root\" Condition="'$(SharedFxArchive)'!=''" />
|
||||
|
||||
<!-- Create layout: Create changelog -->
|
||||
<PropertyGroup>
|
||||
<ChangeLogProps>DATE=$([System.DateTime]::UtcNow.ToString(ddd MMM dd yyyy))</ChangeLogProps>
|
||||
<ChangeLogProps>$(ChangeLogProps);MAINTAINER_NAME=$(RpmMaintainerName)</ChangeLogProps>
|
||||
<ChangeLogProps>$(ChangeLogProps);MAINTAINER_EMAIL=$(RpmMaintainerEmail)</ChangeLogProps>
|
||||
<ChangeLogProps>$(ChangeLogProps);PACKAGE_VERSION=$(RpmPackageVersion)</ChangeLogProps>
|
||||
<ChangeLogProps>$(ChangeLogProps);PACKAGE_REVISION=$(RpmRevision)</ChangeLogProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<GenerateFileFromTemplate TemplateFile="$(_PackagingDir)changelog.in" OutputPath="$(_WorkRoot)templates/changelog" Properties="$(ChangeLogProps)" />
|
||||
|
||||
<!-- Run fpm -->
|
||||
<!-- Retry added due to fpm/docker race where .w/package_root directory cannot be resolved -->
|
||||
<Run
|
||||
FileName="docker"
|
||||
Command="run --rm -v $(RepositoryRoot):$(_DockerRootDir) docker-image-$(Image) fpm --verbose -s dir -t rpm -n $(RpmName)-$(RpmIdVersion) -p $(_DockerRootDir)artifacts/installers/$(RpmName)-$(RpmFileVersion)-$(RpmFileSuffix) -v $(RpmPackageVersion) --iteration $(RpmRevision) -a amd64 $(RpmArguments) --rpm-changelog $(_DockerRootDir).w/templates/changelog --rpm-summary "$(RpmMSummary)" --description "$(RpmDescription)" --maintainer "$(RpmMaintainerName) <$(RpmMaintainerEmail)>" --vendor "$(RpmVendor)" --license "$(RpmLicense)" --url "$(RpmHomepage)" $(_DockerRootDir).w/package_root/="$(RpmInstallRoot)/""
|
||||
MaxRetries="5"/>
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateRpms" DependsOnTargets="_EnsureInstallerPrerequisites">
|
||||
<PropertyGroup>
|
||||
<Image>rhel.7</Image>
|
||||
<RpmVendor>.NET Foundation</RpmVendor>
|
||||
<RHInstallRoot>/opt/rh/rh-dotnet20/root/usr/lib64/dotnet</RHInstallRoot>
|
||||
<Rpm_DotnetRuntimeDependencyId>dotnet-runtime-$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion)</Rpm_DotnetRuntimeDependencyId>
|
||||
<Rpm_DotnetRuntimeDependencyVersion>$(MicrosoftNETCoreAppPackageVersion.Split('-')[0])</Rpm_DotnetRuntimeDependencyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Build Docker Image -->
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildDockerImage" Properties="Image=$(Image)" />
|
||||
|
||||
<ItemGroup>
|
||||
<RpmSharedFxDependencies Include="$(Rpm_DotnetRuntimeDependencyId)" Version="$(Rpm_DotnetRuntimeDependencyVersion)" />
|
||||
<RpmRHSharedFxDirectories Include="$(RHInstallRoot)/shared" />
|
||||
<RpmGenericSharedFxDirectories Include="$(InstallRoot)/shared" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<RpmSharedFxArguments>@(RpmSharedFxDependencies->' -d "%(Identity) >= %(Version)"', ' ')</RpmSharedFxArguments>
|
||||
<RpmRHSharedFxArguments>$(RpmSharedFxArguments) @(RpmRHSharedFxDirectories->' --directories "%(FullPath)"', ' ')</RpmRHSharedFxArguments>
|
||||
<RpmGenericSharedFxArguments>$(RpmSharedFxArguments) @(RpmGenericSharedFxDirectories->' --directories "%(FullPath)"', ' ')</RpmGenericSharedFxArguments>
|
||||
|
||||
<RpmCommonProps>Image=$(Image);RpmVendor=$(RpmVendor);RpmName=$(SharedFxInstallerName)</RpmCommonProps>
|
||||
<RpmCommonProps>$(RpmCommonProps);RpmMaintainerName=$(MaintainerName);RpmMaintainerEmail=$(MaintainerEmail)</RpmCommonProps>
|
||||
<RpmCommonProps>$(RpmCommonProps);RpmHomepage=$(Homepage);RpmRevision=$(RpmPackageRevision)</RpmCommonProps>
|
||||
<RpmCommonProps>$(RpmCommonProps);RpmLicense=$(LicenseType)</RpmCommonProps>
|
||||
<RpmCommonProps>$(RpmCommonProps);SharedFxArchive=$(SharedFxIntermediateArchiveFilePrefix)-linux-x64.tar.gz</RpmCommonProps>
|
||||
<RpmCommonProps>$(RpmCommonProps);RpmMSummary=$(SharedFxSummary);RpmDescription=$(SharedFxDescription)</RpmCommonProps>
|
||||
<RpmGenericProps>RpmInstallRoot=$(InstallRoot)</RpmGenericProps>
|
||||
<RpmRHProps>RpmInstallRoot=$(RHInstallRoot)</RpmRHProps>
|
||||
<RpmProps>RpmIdVersion=$(InstallerIdVersion);RpmPackageVersion=$(InstallerPackageVersion);RpmFileVersion=$(PackageVersion)</RpmProps>
|
||||
|
||||
<RpmSharedFxProps>$(RpmCommonProps);$(RpmGenericProps);$(RpmProps);RpmArguments=$(RpmGenericSharedFxArguments);RpmFileSuffix=x64.rpm</RpmSharedFxProps>
|
||||
<RpmRHSharedFxProps>$(RpmCommonProps);$(RpmRHProps);$(RpmProps);RpmArguments=$(RpmRHSharedFxArguments);RpmFileSuffix=rh.rhel.7-x64.rpm</RpmRHSharedFxProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Generic installer-->
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RpmSharedFxProps)" />
|
||||
|
||||
<!-- RH installer-->
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RpmRHSharedFxProps)" />
|
||||
|
||||
<!-- Remove Docker Image to save disk space -->
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_RemoveDockerImage" Properties="Image=$(Image)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="RunDebTool">
|
||||
<PropertyGroup>
|
||||
<BuildDebInstallerScript>$(RepositoryRoot)src/Installers/Debian/build.sh</BuildDebInstallerScript>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Build deb package -->
|
||||
<Exec Command="$(BuildDebInstallerScript) -i $(_WorkLayoutDir) -o $(_WorkOutputDir) -n $(INSTALLER_NAME) -v $(INSTALLER_VERSION)" />
|
||||
</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 $(SharedFxArchive) -C $(_WorkLayoutDir)package_root/" Condition="'$(SharedFxArchive)'!=''" />
|
||||
|
||||
<!-- Create layout: Generate and Place debian_config.json -->
|
||||
<PropertyGroup>
|
||||
<DebConfigProps>MAINTAINER_NAME=$(MaintainerName)</DebConfigProps>
|
||||
<DebConfigProps>$(DebConfigProps);MAINTAINER_EMAIL=$(MaintainerEmail)</DebConfigProps>
|
||||
<DebConfigProps>$(DebConfigProps);HOMEPAGE=$(Homepage)</DebConfigProps>
|
||||
<DebConfigProps>$(DebConfigProps);INSTALL_ROOT=$(InstallRoot)</DebConfigProps>
|
||||
<DebConfigProps>$(DebConfigProps);PACKAGE_NAME=$(DebPrefix)</DebConfigProps>
|
||||
<DebConfigProps>$(DebConfigProps);PACKAGE_REVISION=$(PackageRevision)</DebConfigProps>
|
||||
<DebConfigProps>$(DebConfigProps);LICENSE_TYPE=$(LicenseType)</DebConfigProps>
|
||||
<DebConfigProps>$(DebConfigProps);SHORT_DESCRIPTION=$(DebSummary)</DebConfigProps>
|
||||
<DebConfigProps>$(DebConfigProps);LONG_DESCRIPTION=$(DebDescription)</DebConfigProps>
|
||||
<DebConfigProps>$(DebConfigProps);DEBIAN_DEPENDENCIES=$(DebDependencies)</DebConfigProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<GenerateFileFromTemplate TemplateFile="$(DebConfigInFile)" OutputPath="$(_WorkLayoutDir)debian_config.json" Properties="$(DebConfigProps)" />
|
||||
|
||||
<!-- Build SharedFx Bundle Deb package -->
|
||||
|
||||
<Exec Command="docker run --rm -v $(RepositoryRoot):$(_DockerRootDir) -e DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true -e INSTALLER_NAME=$(DebPrefix)-$(DebIdVersion) -e INSTALLER_VERSION=$(DebPackageVersion) docker-image-$(Image) ./build.sh /t:RunDebTool"
|
||||
ContinueOnError="WarnAndContinue" />
|
||||
|
||||
<!-- Copy SharedFx 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)-$(DebFileVersion)-x64.deb"
|
||||
SourceFiles="@(GeneratedDebFiles)"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
SkipUnchangedFiles="False"
|
||||
UseHardlinksIfPossible="False" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateDebs" DependsOnTargets="_EnsureInstallerPrerequisites">
|
||||
<PropertyGroup>
|
||||
<Deb_DotnetRuntimeDependencyId>dotnet-runtime-$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion)</Deb_DotnetRuntimeDependencyId>
|
||||
<Deb_DotnetRuntimeDependencyVersion>$(MicrosoftNETCoreAppPackageVersion)</Deb_DotnetRuntimeDependencyVersion>
|
||||
<!-- Needed some creativity to convert the PackageVersion M.N.P-Build to the installer version M.N.P~Build, The conditional handles stabilized builds -->
|
||||
<Deb_DotnetRuntimeDependencyVersion Condition="$(Deb_DotnetRuntimeDependencyVersion.Contains('-'))">$(Deb_DotnetRuntimeDependencyVersion.Substring(0, $(Deb_DotnetRuntimeDependencyVersion.IndexOf('-'))))~$(Deb_DotnetRuntimeDependencyVersion.Substring($([MSBuild]::Add($(Deb_DotnetRuntimeDependencyVersion.IndexOf('-')), 1))))</Deb_DotnetRuntimeDependencyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<_DebSharedFxDependencies Include="$(Deb_DotnetRuntimeDependencyId)" Version="$(Deb_DotnetRuntimeDependencyVersion)"/>
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<Image>ubuntu.14.04</Image>
|
||||
|
||||
<DebSharedFxDependencies>@(_DebSharedFxDependencies->'"%(Identity)": { "package_version": "%(Version)" }', ', ')</DebSharedFxDependencies>
|
||||
|
||||
<DebCommonProps>Image=$(Image);DebPrefix=$(SharedFxInstallerName)</DebCommonProps>
|
||||
<DebCommonProps>$(DebCommonProps);DebSummary=$(SharedFxSummary);DebDescription=$(SharedFxDescription)</DebCommonProps>
|
||||
<DebCommonProps>$(DebCommonProps);SharedFxArchive=$(SharedFxIntermediateArchiveFilePrefix)-linux-x64.tar.gz</DebCommonProps>
|
||||
|
||||
<DebProps>DebIdVersion=$(InstallerIdVersion);DebPackageVersion=$(DebInstallerPackageVersion);DebFileVersion=$(PackageVersion);DebDependencies=$(DebSharedFxDependencies)</DebProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Build Docker Image -->
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildDockerImage" Properties="Image=$(Image)" />
|
||||
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDeb" Properties="$(DebCommonProps);$(DebProps)" />
|
||||
|
||||
<!-- Remove Docker Image to save disk space -->
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_RemoveDockerImage" Properties="Image=$(Image)" />
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,298 @@
|
|||
<Project>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<PackageArtifact>
|
||||
<!-- When true, this dependency will be included in the Microsoft.AspNetCore.App metapackage. -->
|
||||
<AppMetapackage>false</AppMetapackage>
|
||||
<!-- When true, this dependency will be included in the Microsoft.AspNetCore.All metapackage. -->
|
||||
<AllMetapackage>false</AllMetapackage>
|
||||
<!-- When true, this dependency will be included in the Microsoft.AspNetCore.Analyzers metapackage. -->
|
||||
<Analyzer>false</Analyzer>
|
||||
<!--
|
||||
Other known package types:
|
||||
Dependency = for packages that are installed via PackageReference
|
||||
DotnetCliTool = for packages that are installed via DotNetCliToolReference
|
||||
-->
|
||||
<PackageType>Dependency</PackageType>
|
||||
</PackageArtifact>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageArtifact Include="dotnet-aspnet-codegenerator" Category="ship" />
|
||||
<PackageArtifact Include="dotnet-dev-certs" Category="ship" />
|
||||
<PackageArtifact Include="dotnet-ef" Category="ship" />
|
||||
<PackageArtifact Include="dotnet-httprepl" Category="ship" />
|
||||
<PackageArtifact Include="dotnet-sql-cache" Category="ship" />
|
||||
<PackageArtifact Include="dotnet-user-secrets" Category="ship" />
|
||||
<PackageArtifact Include="dotnet-watch" Category="ship" />
|
||||
<PackageArtifact Include="Internal.AspNetCore.Analyzers" Category="noship" />
|
||||
<PackageArtifact Include="Internal.AspNetCore.Universe.Lineup" Category="noship" PackageType="Lineup" />
|
||||
<PackageArtifact Include="Internal.WebHostBuilderFactory.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNet.Identity.AspNetCoreCompat" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.All" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Analyzer.Testing" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Analyzers" Category="shipoob" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Antiforgery" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.App" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.ApplicationInsights.HostingStartup" Category="ship" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.AspNetCoreModule" Category="noship" Condition=" '$(OS)' == 'Windows_NT' " />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.AspNetCoreModuleV2" Category="noship" Condition=" '$(OS)' == 'Windows_NT' " />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.AzureAD.UI" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Cookies" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Core" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Facebook" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Google" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.JwtBearer" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OAuth" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.Twitter" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication.WsFederation" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authentication" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authorization.Policy" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Authorization" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Category="ship" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Category="ship" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.BenchmarkRunner.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Buffering" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Certificates.Generation.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.ChunkingCookieManager.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Connections.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.CookiePolicy" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Cors" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.Internal" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureKeyVault" Category="ship" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.AzureStorage" Category="ship" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.EntityFrameworkCore" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.Extensions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection.SystemWeb" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.DataProtection" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.DeveloperCertificates.XPlat" Category="shipoob" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Elm" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics.Identity.Service" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Diagnostics" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.HostFiltering" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Hosting.WindowsServices" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Hosting" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Html.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Http.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Http.Connections.Client" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Http.Connections.Common" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Http.Connections" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Http.Extensions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Http.Features" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Http" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.HttpOverrides" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.HttpsPolicy" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.HttpSys.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Abstractions" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.AzureKeyVault" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Core" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.EntityFrameworkCore" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.IntegratedWebClient" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Mvc" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service.Specification.Tests" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Service" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.Specification.Tests" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity.UI" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Identity" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.JsonPatch" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Localization.Routing" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Localization" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.MiddlewareAnalysis" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Analyzers" Category="ship" Analyzer="true" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Api.Analyzers" Category="ship" Analyzer="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ApiExplorer" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Core" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Cors" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.DataAnnotations" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Localization" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X" Category="shipoob" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Razor" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.RazorPages" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.TagHelpers" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.Testing" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.ViewFeatures" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc.WebApiCompatShim" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Mvc" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.NodeServices.Sockets" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.NodeServices" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Owin" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.RangeHelper.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Design" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Language" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Razor.Runtime" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Razor.TagHelpers.Testing.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Razor" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCaching" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.ResponseCompression" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Rewrite" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Routing.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Routing.DecisionTree.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Routing" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.HttpSys" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.IIS" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.IISIntegration" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.IntegrationTesting.IIS" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.IntegrationTesting" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Core" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Https" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Category="ship" AppMetapackage="false" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Server.Kestrel" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Session" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Client.Core" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Client" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Common" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Core" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Redis" Category="ship" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR.Specification.Tests" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SignalR" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SpaServices.Extensions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.SpaServices" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.StaticFiles" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.TestHost" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.Testing" Category="noship" />
|
||||
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.WebSockets" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore.WebUtilities" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.AspNetCore" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.CodeAnalysis.Razor.Workspaces" Category="shipoob" />
|
||||
<PackageArtifact Include="Microsoft.CodeAnalysis.Razor" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.CodeAnalysis.Remote.Razor" Category="shipoob" />
|
||||
<PackageArtifact Include="Microsoft.Data.Sqlite.Core" Category="ship" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Data.Sqlite" Category="ship" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.DotNet.Web.Client.ItemTemplates" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.DotNet.Web.ItemTemplates" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.DotNet.Web.ProjectTemplates.3.0" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.DotNet.Web.Spa.ProjectTemplates" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Analyzers" Category="ship" Analyzer="true" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Cosmos" Category="ship"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Design" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.InMemory" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Proxies" Category="ship"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Relational.Specification.Tests" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Relational" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Specification.Tests" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Category="ship" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite" Category="ship" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite" Category="ship"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.SqlServer" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite" Category="ship"/>
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore.Tools" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.EntityFrameworkCore" Category="ship" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<PackageArtifact Include="Microsoft.Extensions.ActivatorUtilities.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.ApiDescription.Design" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.ApplicationModelDetection" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Buffers.MemoryPool.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Buffers.Testing.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Caching.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Caching.Memory" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Caching.Redis" Category="ship" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Caching.StackExchangeRedis" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Caching.SqlServer" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.CommandLineUtils.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.AzureKeyVault" Category="ship" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.Binder" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.CommandLine" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.FileExtensions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.Ini" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.Json" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.KeyPerFile" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.UserSecrets" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration.Xml" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Configuration" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.CopyOnWriteDictionary.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection.Specification.Tests" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.DependencyInjection" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.DiagnosticAdapter" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Category="ship" AppMetapackage="false" AllMetapackage="false" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Diagnostics.HealthChecks" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Composite" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Embedded" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.FileProviders.Physical" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.FileSystemGlobbing" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.HashCodeCombiner.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Hosting.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Hosting" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Http.Polly" Category="ship" AppMetapackage="false" AllMetapackage="false" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Http" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Identity.Core" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Identity.Stores" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Localization.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Localization" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.Abstractions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.Analyzers" Category="shipoob" Analyzer="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.AzureAppServices" Category="ship" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.Configuration" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.Console" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.Debug" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.EventLog" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.EventSource" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.Testing" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging.TraceSource" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Logging" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.NonCapturingTimer.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.ObjectPool" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Options.ConfigurationExtensions" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Options.DataAnnotations" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Options" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.ParameterDefaultValue.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.Primitives" Category="ship" AppMetapackage="true" AllMetapackage="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.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.Sources" Category="noship" />
|
||||
<PackageArtifact Include="Microsoft.Extensions.WebEncoders" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.Net.Http.Headers" Category="ship" AppMetapackage="true" AllMetapackage="true" />
|
||||
<PackageArtifact Include="Microsoft.NET.Sdk.Razor" Category="ship" />
|
||||
<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" AllMetapackage="true"/>
|
||||
<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.Utils" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGeneration" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.VisualStudio.Web.CodeGenerators.Mvc" Category="ship" />
|
||||
<PackageArtifact Include="Microsoft.Web.Xdt.Extensions" Category="shipoob" />
|
||||
<PackageArtifact Include="RazorPageGenerator" Category="noship" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<Project>
|
||||
<ItemDefinitionGroup>
|
||||
<RepositoryBuildOrder>
|
||||
<Order></Order>
|
||||
<RootPath></RootPath>
|
||||
</RepositoryBuildOrder>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<RepositoryBuildOrder Include="Common" Order="1" />
|
||||
<RepositoryBuildOrder Include="Microsoft.Data.Sqlite" Order="1" />
|
||||
<RepositoryBuildOrder Include="DependencyInjection" Order="2" />
|
||||
<RepositoryBuildOrder Include="FileSystem" Order="2" />
|
||||
<RepositoryBuildOrder Include="EventNotification" Order="2" />
|
||||
<RepositoryBuildOrder Include="JsonPatch" Order="2" />
|
||||
<RepositoryBuildOrder Include="Configuration" Order="3" />
|
||||
<RepositoryBuildOrder Include="Options" Order="4" />
|
||||
<RepositoryBuildOrder Include="DotNetTools" Order="4" />
|
||||
<RepositoryBuildOrder Include="Caching" Order="5" />
|
||||
<RepositoryBuildOrder Include="HtmlAbstractions" Order="5" />
|
||||
<RepositoryBuildOrder Include="Logging" Order="5" />
|
||||
<RepositoryBuildOrder Include="Razor" Order="6" />
|
||||
<RepositoryBuildOrder Include="HttpAbstractions" Order="6" />
|
||||
<RepositoryBuildOrder Include="HttpClientFactory" Order="6" />
|
||||
<RepositoryBuildOrder Include="Hosting" Order="7" />
|
||||
<RepositoryBuildOrder Include="KestrelHttpServer" Order="8" />
|
||||
<RepositoryBuildOrder Include="EntityFrameworkCore" Order="8" />
|
||||
<RepositoryBuildOrder Include="HttpSysServer" Order="8" />
|
||||
<RepositoryBuildOrder Include="BrowserLink" Order="8" />
|
||||
<RepositoryBuildOrder Include="DataProtection" Order="9" RootPath="$(RepositoryRoot)src\DataProtection\" />
|
||||
<RepositoryBuildOrder Include="BasicMiddleware" Order="9" />
|
||||
<RepositoryBuildOrder Include="Antiforgery" Order="10" />
|
||||
<RepositoryBuildOrder Include="IISIntegration" Order="10" />
|
||||
<RepositoryBuildOrder Include="StaticFiles" Order="11" />
|
||||
<RepositoryBuildOrder Include="ResponseCaching" Order="11" />
|
||||
<RepositoryBuildOrder Include="Session" Order="11" />
|
||||
<RepositoryBuildOrder Include="ServerTests" Order="11" />
|
||||
<RepositoryBuildOrder Include="CORS" Order="12" />
|
||||
<RepositoryBuildOrder Include="Routing" Order="12" />
|
||||
<RepositoryBuildOrder Include="Diagnostics" Order="12" />
|
||||
<RepositoryBuildOrder Include="Localization" Order="13" />
|
||||
<RepositoryBuildOrder Include="WebSockets" Order="13" />
|
||||
<RepositoryBuildOrder Include="Security" Order="13" />
|
||||
<RepositoryBuildOrder Include="MetaPackages" Order="13" />
|
||||
<RepositoryBuildOrder Include="Mvc" Order="14" />
|
||||
<RepositoryBuildOrder Include="AADIntegration" Order="15" />
|
||||
<RepositoryBuildOrder Include="Identity" Order="15" />
|
||||
<RepositoryBuildOrder Include="JavaScriptServices" Order="15" />
|
||||
<RepositoryBuildOrder Include="Scaffolding" Order="15" />
|
||||
<RepositoryBuildOrder Include="AzureIntegration" Order="15" />
|
||||
<RepositoryBuildOrder Include="MusicStore" Order="16" />
|
||||
<RepositoryBuildOrder Include="SignalR" Order="16" />
|
||||
<RepositoryBuildOrder Include="AuthSamples" Order="16" />
|
||||
<RepositoryBuildOrder Include="Templating" Order="17" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,184 @@
|
|||
<Project>
|
||||
<!-- These package versions may be overridden or updated by automation. -->
|
||||
<PropertyGroup Label="Package Versions: Auto" Condition=" '$(DotNetPackageVersionPropsPath)' == '' ">
|
||||
<MicrosoftCSharpPackageVersion>4.6.0-preview1-26907-04</MicrosoftCSharpPackageVersion>
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>3.0.0-preview1-26907-05</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<!-- MicrosoftNETCoreApp30PackageVersion is assigned at the bottom so it can automatically pick up MicrosoftNETCoreAppPackageVersion in an orchestrated build. -->
|
||||
<MicrosoftNETCoreAppPackageVersion>3.0.0-preview1-26907-05</MicrosoftNETCoreAppPackageVersion>
|
||||
<MicrosoftNETCoreDotNetAppHostPackageVersion>3.0.0-preview1-26907-05</MicrosoftNETCoreDotNetAppHostPackageVersion>
|
||||
<MicrosoftWin32RegistryPackageVersion>4.6.0-preview1-26907-04</MicrosoftWin32RegistryPackageVersion>
|
||||
<SystemBuffersPackageVersion>4.6.0-preview1-26907-04</SystemBuffersPackageVersion>
|
||||
<SystemCollectionsImmutablePackageVersion>1.6.0-preview1-26907-04</SystemCollectionsImmutablePackageVersion>
|
||||
<SystemComponentModelAnnotationsPackageVersion>4.6.0-preview1-26907-04</SystemComponentModelAnnotationsPackageVersion>
|
||||
<SystemDataSqlClientPackageVersion>4.6.0-preview1-26907-04</SystemDataSqlClientPackageVersion>
|
||||
<SystemDiagnosticsDiagnosticSourcePackageVersion>4.6.0-preview1-26907-04</SystemDiagnosticsDiagnosticSourcePackageVersion>
|
||||
<SystemDiagnosticsEventLogPackageVersion>4.6.0-preview1-26907-04</SystemDiagnosticsEventLogPackageVersion>
|
||||
<SystemIOPipelinesPackageVersion>4.6.0-preview1-26907-04</SystemIOPipelinesPackageVersion>
|
||||
<SystemMemoryPackageVersion>4.6.0-preview1-26717-04</SystemMemoryPackageVersion>
|
||||
<SystemNetHttpWinHttpHandlerPackageVersion>4.6.0-preview1-26907-04</SystemNetHttpWinHttpHandlerPackageVersion>
|
||||
<SystemNetWebSocketsWebSocketProtocolPackageVersion>4.6.0-preview1-26907-04</SystemNetWebSocketsWebSocketProtocolPackageVersion>
|
||||
<SystemNumericsVectorsPackageVersion>4.6.0-preview1-26907-04</SystemNumericsVectorsPackageVersion>
|
||||
<SystemReflectionMetadataPackageVersion>1.7.0-preview1-26907-04</SystemReflectionMetadataPackageVersion>
|
||||
<SystemRuntimeCompilerServicesUnsafePackageVersion>4.6.0-preview1-26907-04</SystemRuntimeCompilerServicesUnsafePackageVersion>
|
||||
<SystemSecurityCryptographyCngPackageVersion>4.6.0-preview1-26907-04</SystemSecurityCryptographyCngPackageVersion>
|
||||
<SystemSecurityCryptographyXmlPackageVersion>4.6.0-preview1-26907-04</SystemSecurityCryptographyXmlPackageVersion>
|
||||
<SystemSecurityPermissionsPackageVersion>4.6.0-preview1-26907-04</SystemSecurityPermissionsPackageVersion>
|
||||
<SystemSecurityPrincipalWindowsPackageVersion>4.6.0-preview1-26907-04</SystemSecurityPrincipalWindowsPackageVersion>
|
||||
<SystemServiceProcessServiceControllerPackageVersion>4.6.0-preview1-26907-04</SystemServiceProcessServiceControllerPackageVersion>
|
||||
<SystemTextEncodingsWebPackageVersion>4.6.0-preview1-26907-04</SystemTextEncodingsWebPackageVersion>
|
||||
<SystemThreadingChannelsPackageVersion>4.6.0-preview1-26907-04</SystemThreadingChannelsPackageVersion>
|
||||
<SystemThreadingTasksDataflowPackageVersion>4.10.0-preview1-26907-04</SystemThreadingTasksDataflowPackageVersion>
|
||||
<SystemThreadingTasksExtensionsPackageVersion>4.6.0-preview1-26907-04</SystemThreadingTasksExtensionsPackageVersion>
|
||||
<SystemValueTuplePackageVersion>4.6.0-preview1-26829-04</SystemValueTuplePackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="$(DotNetPackageVersionPropsPath)" Condition="'$(DotNetPackageVersionPropsPath)' != ''" />
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Assign this variable last because it may be updated from DotNetPackageVersionPropsPath as MicrosoftNETCoreAppPackageVersion. -->
|
||||
<MicrosoftNETCoreApp30PackageVersion Condition="'$(MicrosoftNETCoreAppPackageVersion)' != ''">$(MicrosoftNETCoreAppPackageVersion)</MicrosoftNETCoreApp30PackageVersion>
|
||||
|
||||
<!-- Determined by build tools -->
|
||||
<MicrosoftAspNetCoreBuildToolsApiCheckPackageVersion>$(KoreBuildVersion)</MicrosoftAspNetCoreBuildToolsApiCheckPackageVersion>
|
||||
<InternalAspNetCoreSdkPackageVersion>$(KoreBuildVersion)</InternalAspNetCoreSdkPackageVersion>
|
||||
<InternalAspNetCoreSiteExtensionSdkPackageVersion>$(KoreBuildVersion)</InternalAspNetCoreSiteExtensionSdkPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- These are package versions that should not be overridden or updated by automation. -->
|
||||
<PropertyGroup Label="Package Versions: Pinned">
|
||||
<AngleSharpPackageVersion>0.9.9</AngleSharpPackageVersion>
|
||||
<BenchmarkDotNetPackageVersion>0.10.13</BenchmarkDotNetPackageVersion>
|
||||
|
||||
<!--
|
||||
BenchmarksOnly* package versions come from NuGet.org and are intended only for use in benchmarks apps where EF
|
||||
is not otherwise referenced. They avoid unnecessary changes to the Universe build graph or to product
|
||||
dependencies. Do not use these properties elsewhere.
|
||||
-->
|
||||
<BenchmarksOnlyMicrosoftEntityFrameworkCoreDesignPackageVersion>2.1.1</BenchmarksOnlyMicrosoftEntityFrameworkCoreDesignPackageVersion>
|
||||
<BenchmarksOnlyMicrosoftEntityFrameworkCoreSqlitePackageVersion>2.1.1</BenchmarksOnlyMicrosoftEntityFrameworkCoreSqlitePackageVersion>
|
||||
<BenchmarksOnlyMicrosoftEntityFrameworkCoreSqlServerPackageVersion>2.1.1</BenchmarksOnlyMicrosoftEntityFrameworkCoreSqlServerPackageVersion>
|
||||
<BenchmarksOnlyMySqlConnectorPackageVersion>0.43.0</BenchmarksOnlyMySqlConnectorPackageVersion>
|
||||
<BenchmarksOnlyNpgsqlEntityFrameworkCorePostgreSQLPackageVersion>2.1.1.1</BenchmarksOnlyNpgsqlEntityFrameworkCorePostgreSQLPackageVersion>
|
||||
<BenchmarksOnlyPomeloEntityFrameworkCoreMySqlPackageVersion>2.1.1</BenchmarksOnlyPomeloEntityFrameworkCoreMySqlPackageVersion>
|
||||
|
||||
<CastleCorePackageVersion>4.2.1</CastleCorePackageVersion>
|
||||
<DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion>2.2.0-preview1-03124-01</DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion>
|
||||
<DevDependency_MicrosoftExtensionsDependencyModelPackageVersion>2.0.0</DevDependency_MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<DevDependency_WindowsAzureStoragePackageVersion>8.7.0</DevDependency_WindowsAzureStoragePackageVersion>
|
||||
<FSharpCorePackageVersion>4.2.1</FSharpCorePackageVersion>
|
||||
<GoogleProtobufPackageVersion>3.1.0</GoogleProtobufPackageVersion>
|
||||
<LibuvPackageVersion>1.10.0</LibuvPackageVersion>
|
||||
<MessagePackPackageVersion>1.7.3.4</MessagePackPackageVersion>
|
||||
<MicrosoftApplicationInsightsAspNetCorePackageVersion>2.1.1</MicrosoftApplicationInsightsAspNetCorePackageVersion>
|
||||
<MicrosoftAspNetIdentityEntityFrameworkPackageVersion>2.2.1</MicrosoftAspNetIdentityEntityFrameworkPackageVersion>
|
||||
<MicrosoftAspNetWebApiClientPackageVersion>5.2.6</MicrosoftAspNetWebApiClientPackageVersion>
|
||||
<MicrosoftAzureDocumentDBCorePackageVersion>1.7.1</MicrosoftAzureDocumentDBCorePackageVersion>
|
||||
<MicrosoftAzureKeyVaultPackageVersion>2.3.2</MicrosoftAzureKeyVaultPackageVersion>
|
||||
<MicrosoftAzureManagementFluentPackageVersion>1.1.3</MicrosoftAzureManagementFluentPackageVersion>
|
||||
<MicrosoftAzureServicesAppAuthenticationPackageVersion>1.0.1</MicrosoftAzureServicesAppAuthenticationPackageVersion>
|
||||
<MicrosoftBuildFrameworkPackageVersion>15.8.166</MicrosoftBuildFrameworkPackageVersion>
|
||||
<MicrosoftBuildPackageVersion>15.8.166</MicrosoftBuildPackageVersion>
|
||||
<MicrosoftBuildRuntimePackageVersion>15.8.166</MicrosoftBuildRuntimePackageVersion>
|
||||
<MicrosoftBuildTasksCorePackageVersion>15.8.166</MicrosoftBuildTasksCorePackageVersion>
|
||||
<MicrosoftBuildUtilitiesCorePackageVersion>15.8.166</MicrosoftBuildUtilitiesCorePackageVersion>
|
||||
<MicrosoftCodeAnalysisCommonPackageVersion>2.8.0</MicrosoftCodeAnalysisCommonPackageVersion>
|
||||
<MicrosoftCodeAnalysisCSharpPackageVersion>2.8.0</MicrosoftCodeAnalysisCSharpPackageVersion>
|
||||
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>2.8.0</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
|
||||
<MicrosoftDiaSymReaderNativePackageVersion>1.7.0</MicrosoftDiaSymReaderNativePackageVersion>
|
||||
<MicrosoftDotNetArchivePackageVersion>0.2.0-beta-63019-01</MicrosoftDotNetArchivePackageVersion>
|
||||
<MicrosoftDotNetProjectModelPackageVersion>1.0.0-rc3-003121</MicrosoftDotNetProjectModelPackageVersion>
|
||||
<MicrosoftExtensionsPlatformAbstractionsPackageVersion>1.1.0</MicrosoftExtensionsPlatformAbstractionsPackageVersion>
|
||||
<MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>3.19.8</MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>
|
||||
<MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>5.3.0</MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>
|
||||
<MicrosoftIdentityModelProtocolsWsFederationPackageVersion>5.3.0</MicrosoftIdentityModelProtocolsWsFederationPackageVersion>
|
||||
<MicrosoftInternalAspNetCoreH2SpecAllPackageVersion>2.1.1</MicrosoftInternalAspNetCoreH2SpecAllPackageVersion>
|
||||
<MicrosoftNETCoreApp10PackageVersion>1.0.12</MicrosoftNETCoreApp10PackageVersion>
|
||||
<MicrosoftNETCoreApp11PackageVersion>1.1.9</MicrosoftNETCoreApp11PackageVersion>
|
||||
<MicrosoftNETCoreApp20PackageVersion>2.0.9</MicrosoftNETCoreApp20PackageVersion>
|
||||
<MicrosoftNETCoreApp21PackageVersion>2.1.3</MicrosoftNETCoreApp21PackageVersion>
|
||||
<MicrosoftNETCoreApp22PackageVersion>2.2.0-preview3-27014-02</MicrosoftNETCoreApp22PackageVersion>
|
||||
<MicrosoftNETCoreDotNetAppHost21PackageVersion>$(MicrosoftNETCoreApp21PackageVersion)</MicrosoftNETCoreDotNetAppHost21PackageVersion>
|
||||
<MicrosoftNETCoreDotNetAppHost22PackageVersion>$(MicrosoftNETCoreApp22PackageVersion)</MicrosoftNETCoreDotNetAppHost22PackageVersion>
|
||||
<MicrosoftNETCoreWindowsApiSetsPackageVersion>1.0.1</MicrosoftNETCoreWindowsApiSetsPackageVersion>
|
||||
<MicrosoftNETTestSdkPackageVersion>15.6.1</MicrosoftNETTestSdkPackageVersion>
|
||||
<MicrosoftOwinSecurityCookiesPackageVersion>3.0.1</MicrosoftOwinSecurityCookiesPackageVersion>
|
||||
<MicrosoftOwinSecurityPackageVersion>3.0.1</MicrosoftOwinSecurityPackageVersion>
|
||||
<MicrosoftOwinTestingPackageVersion>3.0.1</MicrosoftOwinTestingPackageVersion>
|
||||
<MicrosoftVisualStudioComponentModelHostPackageVersion>15.8.525</MicrosoftVisualStudioComponentModelHostPackageVersion>
|
||||
<MicrosoftVisualStudioEditorPackageVersion>15.8.525</MicrosoftVisualStudioEditorPackageVersion>
|
||||
<MicrosoftVisualStudioImageCatalogPackageVersion>15.8.28010</MicrosoftVisualStudioImageCatalogPackageVersion>
|
||||
<MicrosoftVisualStudioLanguagePackageVersion>15.8.525</MicrosoftVisualStudioLanguagePackageVersion>
|
||||
<MicrosoftVisualStudioLanguageIntellisensePackageVersion>15.8.525</MicrosoftVisualStudioLanguageIntellisensePackageVersion>
|
||||
<MicrosoftVisualStudioOLEInteropPackageVersion>7.10.6071</MicrosoftVisualStudioOLEInteropPackageVersion>
|
||||
<MicrosoftVisualStudioProjectSystemAnalyzersPackageVersion>15.8.243</MicrosoftVisualStudioProjectSystemAnalyzersPackageVersion>
|
||||
<MicrosoftVisualStudioProjectSystemManagedVSPackageVersion>2.0.6142705</MicrosoftVisualStudioProjectSystemManagedVSPackageVersion>
|
||||
<MicrosoftVisualStudioProjectSystemSDKPackageVersion>15.8.243</MicrosoftVisualStudioProjectSystemSDKPackageVersion>
|
||||
<MicrosoftVisualStudioShell150PackageVersion>15.8.28010</MicrosoftVisualStudioShell150PackageVersion>
|
||||
<MicrosoftVisualStudioShellInterop100PackageVersion>10.0.30320</MicrosoftVisualStudioShellInterop100PackageVersion>
|
||||
<MicrosoftVisualStudioShellInterop110PackageVersion>11.0.61031</MicrosoftVisualStudioShellInterop110PackageVersion>
|
||||
<MicrosoftVisualStudioShellInterop120PackageVersion>12.0.30111</MicrosoftVisualStudioShellInterop120PackageVersion>
|
||||
<MicrosoftVisualStudioShellInterop80PackageVersion>8.0.50728</MicrosoftVisualStudioShellInterop80PackageVersion>
|
||||
<MicrosoftVisualStudioShellInterop90PackageVersion>9.0.30730</MicrosoftVisualStudioShellInterop90PackageVersion>
|
||||
<MicrosoftVisualStudioShellInteropPackageVersion>7.10.6072</MicrosoftVisualStudioShellInteropPackageVersion>
|
||||
<MicrosoftVisualStudioTextUIPackageVersion>15.8.525</MicrosoftVisualStudioTextUIPackageVersion>
|
||||
<MicrosoftVisualStudioThreadingPackageVersion>15.8.168</MicrosoftVisualStudioThreadingPackageVersion>
|
||||
<MicrosoftWebAdministrationPackageVersion>11.1.0</MicrosoftWebAdministrationPackageVersion>
|
||||
<MicrosoftWebXdtPackageVersion>1.4.0</MicrosoftWebXdtPackageVersion>
|
||||
<mod_spatialitePackageVersion>4.3.0.1</mod_spatialitePackageVersion>
|
||||
<MonoAddinsPackageVersion>1.3.8</MonoAddinsPackageVersion>
|
||||
<MonoDevelopSdkPackageVersion>1.0.1</MonoDevelopSdkPackageVersion>
|
||||
<MoqPackageVersion>4.10.0</MoqPackageVersion>
|
||||
<NETStandard16PackageVersion>1.6.1</NETStandard16PackageVersion>
|
||||
<NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>
|
||||
<NetTopologySuiteCorePackageVersion>1.15.1</NetTopologySuiteCorePackageVersion>
|
||||
<NetTopologySuiteIOSpatiaLitePackageVersion>1.15.0</NetTopologySuiteIOSpatiaLitePackageVersion>
|
||||
<NetTopologySuiteIOSqlServerBytesPackageVersion>1.15.0-pre001</NetTopologySuiteIOSqlServerBytesPackageVersion>
|
||||
<NewtonsoftJsonBsonPackageVersion>1.0.1</NewtonsoftJsonBsonPackageVersion>
|
||||
<NewtonsoftJsonPackageVersion>11.0.2</NewtonsoftJsonPackageVersion>
|
||||
<NuGetFrameworksPackageVersion>4.7.0</NuGetFrameworksPackageVersion>
|
||||
<OracleManagedDataAccessPackageVersion>12.2.1100</OracleManagedDataAccessPackageVersion>
|
||||
<PollyExtensionsHttpPackageVersion>2.0.1</PollyExtensionsHttpPackageVersion>
|
||||
<PollyPackageVersion>6.0.1</PollyPackageVersion>
|
||||
<RemotionLinqPackageVersion>2.2.0</RemotionLinqPackageVersion>
|
||||
<SeleniumFirefoxWebDriverPackageVersion>0.20.0</SeleniumFirefoxWebDriverPackageVersion>
|
||||
<SeleniumSupportPackageVersion>3.12.1</SeleniumSupportPackageVersion>
|
||||
<SeleniumWebDriverMicrosoftDriverPackageVersion>17.17134.0</SeleniumWebDriverMicrosoftDriverPackageVersion>
|
||||
<SeleniumWebDriverPackageVersion>3.12.1</SeleniumWebDriverPackageVersion>
|
||||
<SerilogExtensionsLoggingPackageVersion>1.4.0</SerilogExtensionsLoggingPackageVersion>
|
||||
<SerilogSinksFilePackageVersion>4.0.0</SerilogSinksFilePackageVersion>
|
||||
<SQLitePCLRawBundleGreenPackageVersion>1.1.11</SQLitePCLRawBundleGreenPackageVersion>
|
||||
<SQLitePCLRawBundleSqlcipherPackageVersion>1.1.11</SQLitePCLRawBundleSqlcipherPackageVersion>
|
||||
<SQLitePCLRawCorePackageVersion>1.1.11</SQLitePCLRawCorePackageVersion>
|
||||
<StackExchangeRedisStrongNamePackageVersion>1.2.6</StackExchangeRedisStrongNamePackageVersion>
|
||||
<StackExchangeRedisPackageVersion>2.0.513</StackExchangeRedisPackageVersion>
|
||||
<StreamJsonRpcPackageVersion>1.4.128</StreamJsonRpcPackageVersion>
|
||||
<StyleCopAnalyzersPackageVersion>1.0.0</StyleCopAnalyzersPackageVersion>
|
||||
<SystemIdentityModelTokensJwtPackageVersion>5.3.0</SystemIdentityModelTokensJwtPackageVersion>
|
||||
<SystemInteractiveAsyncPackageVersion>3.2.0</SystemInteractiveAsyncPackageVersion>
|
||||
<SystemNetHttpPackageVersion>4.3.2</SystemNetHttpPackageVersion>
|
||||
<SystemReactiveLinqPackageVersion>3.1.1</SystemReactiveLinqPackageVersion>
|
||||
<SystemReflectionEmitPackageVersion>4.3.0</SystemReflectionEmitPackageVersion>
|
||||
<SystemRuntimeInteropServicesRuntimeInformationPackageVersion>4.3.0</SystemRuntimeInteropServicesRuntimeInformationPackageVersion>
|
||||
<Utf8JsonPackageVersion>1.3.7</Utf8JsonPackageVersion>
|
||||
<VisualStudio_NewtonsoftJsonPackageVersion>9.0.1</VisualStudio_NewtonsoftJsonPackageVersion>
|
||||
<VSIX_MicrosoftCodeAnalysisCommonPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftCodeAnalysisCommonPackageVersion>
|
||||
<VSIX_MicrosoftCodeAnalysisCSharpFeaturesPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftCodeAnalysisCSharpFeaturesPackageVersion>
|
||||
<VSIX_MicrosoftCodeAnalysisCSharpPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftCodeAnalysisCSharpPackageVersion>
|
||||
<VSIX_MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
|
||||
<VSIX_MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion>
|
||||
<VSIX_MicrosoftCodeAnalysisRemoteRazorServiceHubPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftCodeAnalysisRemoteRazorServiceHubPackageVersion>
|
||||
<VSIX_MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion>
|
||||
<VSIX_MicrosoftCodeAnalysisWorkspacesCommonPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftCodeAnalysisWorkspacesCommonPackageVersion>
|
||||
<VSIX_MicrosoftVisualStudioLanguageServicesPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftVisualStudioLanguageServicesPackageVersion>
|
||||
<VSIX_MicrosoftVisualStudioLanguageServicesRazorRemoteClientPackageVersion>2.9.0-beta4-62911-02</VSIX_MicrosoftVisualStudioLanguageServicesRazorRemoteClientPackageVersion>
|
||||
<WindowsAzureStoragePackageVersion>8.1.4</WindowsAzureStoragePackageVersion>
|
||||
<XunitAbstractionsPackageVersion>2.0.1</XunitAbstractionsPackageVersion>
|
||||
<XunitAnalyzersPackageVersion>0.10.0</XunitAnalyzersPackageVersion>
|
||||
<XunitAssertPackageVersion>2.3.1</XunitAssertPackageVersion>
|
||||
<XunitCorePackageVersion>2.3.1</XunitCorePackageVersion>
|
||||
<XunitExtensibilityCorePackageVersion>2.3.1</XunitExtensibilityCorePackageVersion>
|
||||
<XunitExtensibilityExecutionPackageVersion>2.3.1</XunitExtensibilityExecutionPackageVersion>
|
||||
<XunitPackageVersion>2.3.1</XunitPackageVersion>
|
||||
<XunitRunnerVisualStudioPackageVersion>2.4.0</XunitRunnerVisualStudioPackageVersion>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
FROM microsoft/dotnet:2.1.0-preview1-runtime-deps-alpine
|
||||
ARG USER
|
||||
ARG USER_ID
|
||||
ARG GROUP_ID
|
||||
|
||||
WORKDIR /code/build
|
||||
RUN mkdir -p "/home/$USER" && chown "${USER_ID}:${GROUP_ID}" "/home/$USER"
|
||||
ENV HOME "/home/$USER"
|
||||
|
||||
RUN apk add --no-cache \
|
||||
bash \
|
||||
wget \
|
||||
git \
|
||||
jq \
|
||||
curl \
|
||||
icu-libs \
|
||||
openssl
|
||||
|
||||
USER $USER_ID:$GROUP_ID
|
||||
|
||||
# Disable the invariant mode (set in base image)
|
||||
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT false
|
||||
ENV LC_ALL en_US.UTF-8
|
||||
ENV LANG en_US.UTF-8
|
||||
|
||||
# Skip package initilization
|
||||
ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
|
|
@ -0,0 +1,192 @@
|
|||
<Project>
|
||||
<Import Project="dependencies.props" />
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ExternalDependency>
|
||||
<!-- The NuGet package version. Floating versions not allowed. -->
|
||||
<Version></Version>
|
||||
<!-- When true, this dependency will be included in the Microsoft.AspNetCore.App metapackage. -->
|
||||
<AppMetapackage>false</AppMetapackage>
|
||||
<!-- When true, this dependency will be included in the Microsoft.AspNetCore.All metapackage. -->
|
||||
<AllMetapackage>false</AllMetapackage>
|
||||
</ExternalDependency>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ExternalDependency Include="AngleSharp" Version="$(AngleSharpPackageVersion)" />
|
||||
<ExternalDependency Include="BenchmarkDotNet" Version="$(BenchmarkDotNetPackageVersion)" />
|
||||
<ExternalDependency Include="Castle.Core" Version="$(CastleCorePackageVersion)" />
|
||||
<ExternalDependency Include="FSharp.Core" Version="$(FSharpCorePackageVersion)" />
|
||||
<ExternalDependency Include="Google.Protobuf" Version="$(GoogleProtobufPackageVersion)" />
|
||||
<ExternalDependency Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.AspNetCore.BuildTools.ApiCheck" Version="$(MicrosoftAspNetCoreBuildToolsApiCheckPackageVersion)" />
|
||||
<ExternalDependency Include="Internal.AspNetCore.SiteExtension.Sdk" Version="$(InternalAspNetCoreSiteExtensionSdkPackageVersion)" />
|
||||
<ExternalDependency Include="Libuv" Version="$(LibuvPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.ApplicationInsights.AspNetCore" Version="$(MicrosoftApplicationInsightsAspNetCorePackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.AspNet.Identity.EntityFramework" Version="$(MicrosoftAspNetIdentityEntityFrameworkPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.AspNet.WebApi.Client" Version="$(MicrosoftAspNetWebApiClientPackageVersion)" AppMetapackage="true" AllMetapackage="true"/>
|
||||
<ExternalDependency Include="Microsoft.Azure.DocumentDB.Core" Version="$(MicrosoftAzureDocumentDBCorePackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Azure.KeyVault" Version="$(MicrosoftAzureKeyVaultPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Azure.Management.Fluent" Version="$(MicrosoftAzureManagementFluentPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Azure.Services.AppAuthentication" Version="$(MicrosoftAzureServicesAppAuthenticationPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Build" Version="$(MicrosoftBuildPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Build.Runtime" Version="$(MicrosoftBuildRuntimePackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Build.Tasks.Core" Version="$(MicrosoftBuildTasksCorePackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCorePackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Internal.AspNetCore.H2Spec.All" Version="$(MicrosoftInternalAspNetCoreH2SpecAllPackageVersion)" />
|
||||
|
||||
<!-- Razor uses a custom version of roslyn packages -->
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.Common" Version="$(MicrosoftCodeAnalysisCommonPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.Common" Version="$(VSIX_MicrosoftCodeAnalysisCommonPackageVersion)" VariableName="VSIX_MicrosoftCodeAnalysisCommonPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp" Version="$(MicrosoftCodeAnalysisCSharpPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp" Version="$(VSIX_MicrosoftCodeAnalysisCSharpPackageVersion)" VariableName="VSIX_MicrosoftCodeAnalysisCSharpPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp.Features" Version="$(VSIX_MicrosoftCodeAnalysisCSharpFeaturesPackageVersion)" VariableName="VSIX_MicrosoftCodeAnalysisCSharpFeaturesPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="$(MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="$(VSIX_MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion)" VariableName="VSIX_MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.EditorFeatures.Text" Version="$(VSIX_MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion)" VariableName="VSIX_MicrosoftCodeAnalysisEditorFeaturesTextPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.Remote.Razor.ServiceHub" Version="$(VSIX_MicrosoftCodeAnalysisRemoteRazorServiceHubPackageVersion)" VariableName="VSIX_MicrosoftCodeAnalysisRemoteRazorServiceHubPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="$(VSIX_MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion)" VariableName="VSIX_MicrosoftCodeAnalysisVisualBasicWorkspacesPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(VSIX_MicrosoftCodeAnalysisWorkspacesCommonPackageVersion)" VariableName="VSIX_MicrosoftCodeAnalysisWorkspacesCommonPackageVersion" />
|
||||
|
||||
<!--
|
||||
BenchmarksOnly* package versions come from NuGet.org and are intended only for use in benchmarks apps where EF
|
||||
is not otherwise referenced. They avoid unnecessary changes to the Universe build graph or to product
|
||||
dependencies. Do not use these external dependencies elsewhere.
|
||||
-->
|
||||
<ExternalDependency Include="Microsoft.EntityFrameworkCore.Design" Version="$(BenchmarksOnlyMicrosoftEntityFrameworkCoreDesignPackageVersion)" VariableName="BenchmarksOnlyMicrosoftEntityFrameworkCoreDesignPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.EntityFrameworkCore.Sqlite" Version="$(BenchmarksOnlyMicrosoftEntityFrameworkCoreSqlitePackageVersion)" VariableName="BenchmarksOnlyMicrosoftEntityFrameworkCoreSqlitePackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.EntityFrameworkCore.SqlServer" Version="$(BenchmarksOnlyMicrosoftEntityFrameworkCoreSqlServerPackageVersion)" VariableName="BenchmarksOnlyMicrosoftEntityFrameworkCoreSqlServerPackageVersion" />
|
||||
<ExternalDependency Include="MySqlConnector" Version="$(BenchmarksOnlyMySqlConnectorPackageVersion)" VariableName="BenchmarksOnlyMySqlConnectorPackageVersion" />
|
||||
<ExternalDependency Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="$(BenchmarksOnlyNpgsqlEntityFrameworkCorePostgreSQLPackageVersion)" VariableName="BenchmarksOnlyNpgsqlEntityFrameworkCorePostgreSQLPackageVersion" />
|
||||
<ExternalDependency Include="Pomelo.EntityFrameworkCore.MySql" Version="$(BenchmarksOnlyPomeloEntityFrameworkCoreMySqlPackageVersion)" VariableName="BenchmarksOnlyPomeloEntityFrameworkCoreMySqlPackageVersion" />
|
||||
|
||||
<ExternalDependency Include="Microsoft.CSharp" Version="$(MicrosoftCSharpPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.DotNet.ProjectModel" Version="$(MicrosoftDotNetProjectModelPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.DiaSymReader.Native" Version="$(MicrosoftDiaSymReaderNativePackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.DependencyModel" Version="$(MicrosoftExtensionsDependencyModelPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="$(MicrosoftIdentityModelClientsActiveDirectoryPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="$(MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.IdentityModel.Protocols.WsFederation" Version="$(MicrosoftIdentityModelProtocolsWsFederationPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
|
||||
|
||||
<!-- Multiple versions of this package required to support all netcoreapp versions -->
|
||||
<ExternalDependency Include="Microsoft.NETCore.App" Version="$(MicrosoftNETCoreApp10PackageVersion)" VariableName="MicrosoftNETCoreApp10PackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.App" Version="$(MicrosoftNETCoreApp11PackageVersion)" VariableName="MicrosoftNETCoreApp11PackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.App" Version="$(MicrosoftNETCoreApp20PackageVersion)" VariableName="MicrosoftNETCoreApp20PackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.App" Version="$(MicrosoftNETCoreApp21PackageVersion)" VariableName="MicrosoftNETCoreApp21PackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.App" Version="$(MicrosoftNETCoreApp22PackageVersion)" VariableName="MicrosoftNETCoreApp22PackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.App" Version="$(MicrosoftNETCoreApp30PackageVersion)" VariableName="MicrosoftNETCoreApp30PackageVersion" />
|
||||
|
||||
<!-- Microsoft.NetCore.DotNetAppHost for global tools-->
|
||||
<ExternalDependency Include="Microsoft.NETCore.DotNetAppHost" Version="$(MicrosoftNETCoreDotNetAppHost21PackageVersion)" VariableName="MicrosoftNETCoreDotNetAppHost21PackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.DotNetAppHost" Version="$(MicrosoftNETCoreDotNetAppHost22PackageVersion)" VariableName="MicrosoftNETCoreDotNetAppHost22PackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.DotNetAppHost" Version="$(MicrosoftNETCoreDotNetAppHostPackageVersion)" />
|
||||
|
||||
<ExternalDependency Include="Microsoft.NETCore.Windows.ApiSets" Version="$(MicrosoftNETCoreWindowsApiSetsPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Owin.Security" Version="$(MicrosoftOwinSecurityPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Owin.Security.Cookies" Version="$(MicrosoftOwinSecurityCookiesPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Owin.Testing" Version="$(MicrosoftOwinTestingPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.ImageCatalog" Version="$(MicrosoftVisualStudioImageCatalogPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Language" Version="$(MicrosoftVisualStudioLanguagePackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Language.Intellisense" Version="$(MicrosoftVisualStudioLanguageIntellisensePackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.LanguageServices" Version="$(VSIX_MicrosoftVisualStudioLanguageServicesPackageVersion)" VariableName="VSIX_MicrosoftVisualStudioLanguageServicesPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.LanguageServices.Razor.RemoteClient" Version="$(VSIX_MicrosoftVisualStudioLanguageServicesRazorRemoteClientPackageVersion)" VariableName="VSIX_MicrosoftVisualStudioLanguageServicesRazorRemoteClientPackageVersion" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.OLE.Interop" Version="$(MicrosoftVisualStudioOLEInteropPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.ProjectSystem.Analyzers" Version="$(MicrosoftVisualStudioProjectSystemAnalyzersPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.ProjectSystem.Managed.VS" Version="$(MicrosoftVisualStudioProjectSystemManagedVSPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.ProjectSystem.SDK" Version="$(MicrosoftVisualStudioProjectSystemSDKPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Shell.15.0" Version="$(MicrosoftVisualStudioShell150PackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Shell.Interop" Version="$(MicrosoftVisualStudioShellInteropPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Shell.Interop.10.0" Version="$(MicrosoftVisualStudioShellInterop100PackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Shell.Interop.11.0" Version="$(MicrosoftVisualStudioShellInterop110PackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Shell.Interop.12.0" Version="$(MicrosoftVisualStudioShellInterop120PackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Shell.Interop.8.0" Version="$(MicrosoftVisualStudioShellInterop80PackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Shell.Interop.9.0" Version="$(MicrosoftVisualStudioShellInterop90PackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Text.UI" Version="$(MicrosoftVisualStudioTextUIPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.VisualStudio.Threading" Version="$(MicrosoftVisualStudioThreadingPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Web.Xdt" Version="$(MicrosoftWebXdtPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Web.Administration" Version="$(MicrosoftWebAdministrationPackageVersion)" />
|
||||
<ExternalDependency Include="Microsoft.Win32.Registry" Version="$(MicrosoftWin32RegistryPackageVersion)" />
|
||||
<ExternalDependency Include="mod_spatialite" Version="$(mod_spatialitePackageVersion)" />
|
||||
<ExternalDependency Include="Mono.Addins" Version="$(MonoAddinsPackageVersion)" />
|
||||
<ExternalDependency Include="MonoDevelop.Sdk" Version="$(MonoDevelopSdkPackageVersion)" />
|
||||
<ExternalDependency Include="Moq" Version="$(MoqPackageVersion)" />
|
||||
<ExternalDependency Include="MessagePack" Version="$(MessagePackPackageVersion)" />
|
||||
|
||||
<!-- netstandard1.x -->
|
||||
<ExternalDependency Include="NETStandard.Library" Version="$(NETStandard16PackageVersion)" VariableName="NETStandard16PackageVersion" />
|
||||
<!-- netstandard2.0 -->
|
||||
<ExternalDependency Include="NETStandard.Library" Version="$(NETStandardLibrary20PackageVersion)" VariableName="NETStandardLibrary20PackageVersion" />
|
||||
|
||||
<ExternalDependency Include="NetTopologySuite.Core" Version="$(NetTopologySuiteCorePackageVersion)" />
|
||||
<ExternalDependency Include="NetTopologySuite.IO.SpatiaLite" Version="$(NetTopologySuiteIOSpatiaLitePackageVersion)" />
|
||||
<ExternalDependency Include="NetTopologySuite.IO.SqlServerBytes" Version="$(NetTopologySuiteIOSqlServerBytesPackageVersion)" />
|
||||
|
||||
<!-- This version should be used by runtime packages -->
|
||||
<ExternalDependency Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
||||
<!-- This version is required by MSBuild tasks or Visual Studio extensions. -->
|
||||
<ExternalDependency Include="Newtonsoft.Json" Version="$(VisualStudio_NewtonsoftJsonPackageVersion)" VariableName="VisualStudio_NewtonsoftJsonPackageVersion" />
|
||||
|
||||
<ExternalDependency Include="Newtonsoft.Json.Bson" Version="$(NewtonsoftJsonBsonPackageVersion)" />
|
||||
<ExternalDependency Include="NuGet.Frameworks" Version="$(NuGetFrameworksPackageVersion)" />
|
||||
<ExternalDependency Include="Oracle.ManagedDataAccess" Version="$(OracleManagedDataAccessPackageVersion)" />
|
||||
<ExternalDependency Include="Polly.Extensions.Http" Version="$(PollyExtensionsHttpPackageVersion)" />
|
||||
<ExternalDependency Include="Polly" Version="$(PollyPackageVersion)" />
|
||||
<ExternalDependency Include="Remotion.Linq" Version="$(RemotionLinqPackageVersion)" />
|
||||
<ExternalDependency Include="Selenium.Firefox.WebDriver" Version="$(SeleniumFirefoxWebDriverPackageVersion)" />
|
||||
<ExternalDependency Include="Selenium.Support" Version="$(SeleniumSupportPackageVersion)" />
|
||||
<ExternalDependency Include="Selenium.WebDriver.MicrosoftDriver" Version="$(SeleniumWebDriverMicrosoftDriverPackageVersion)" />
|
||||
<ExternalDependency Include="Selenium.WebDriver" Version="$(SeleniumWebDriverPackageVersion)" />
|
||||
<ExternalDependency Include="Serilog.Extensions.Logging" Version="$(SerilogExtensionsLoggingPackageVersion)" />
|
||||
<ExternalDependency Include="Serilog.Sinks.File" Version="$(SerilogSinksFilePackageVersion)" />
|
||||
<ExternalDependency Include="SQLitePCLRaw.bundle_green" Version="$(SQLitePCLRawBundleGreenPackageVersion)" />
|
||||
<ExternalDependency Include="SQLitePCLRaw.bundle_sqlcipher" Version="$(SQLitePCLRawBundleSqlcipherPackageVersion)" />
|
||||
<ExternalDependency Include="SQLitePCLRaw.core" Version="$(SQLitePCLRawCorePackageVersion)" />
|
||||
<ExternalDependency Include="StackExchange.Redis.StrongName" Version="$(StackExchangeRedisStrongNamePackageVersion)" />
|
||||
<ExternalDependency Include="StreamJsonRpc" Version="$(StreamJsonRpcPackageVersion)" />
|
||||
<ExternalDependency Include="StyleCop.Analyzers" Version="$(StyleCopAnalyzersPackageVersion)" />
|
||||
<ExternalDependency Include="System.Buffers" Version="$(SystemBuffersPackageVersion)" />
|
||||
<ExternalDependency Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutablePackageVersion)" />
|
||||
<ExternalDependency Include="System.ComponentModel.Annotations" Version="$(SystemComponentModelAnnotationsPackageVersion)" />
|
||||
<ExternalDependency Include="System.Data.SqlClient" Version="$(SystemDataSqlClientPackageVersion)" />
|
||||
<ExternalDependency Include="System.Diagnostics.DiagnosticSource" Version="$(SystemDiagnosticsDiagnosticSourcePackageVersion)" />
|
||||
<ExternalDependency Include="System.Diagnostics.EventLog" Version="$(SystemDiagnosticsEventLogPackageVersion)" />
|
||||
<ExternalDependency Include="System.IdentityModel.Tokens.Jwt" Version="$(SystemIdentityModelTokensJwtPackageVersion)" />
|
||||
<ExternalDependency Include="System.Interactive.Async" Version="$(SystemInteractiveAsyncPackageVersion)" />
|
||||
<ExternalDependency Include="System.IO.Pipelines" Version="$(SystemIOPipelinesPackageVersion)" AppMetapackage="true" AllMetapackage="true" MetapackageVersionRangeType="Minimum" />
|
||||
<ExternalDependency Include="System.Memory" Version="$(SystemMemoryPackageVersion)" />
|
||||
<ExternalDependency Include="System.Net.Http.WinHttpHandler" Version="$(SystemNetHttpWinHttpHandlerPackageVersion)" />
|
||||
<ExternalDependency Include="System.Net.Http" Version="$(SystemNetHttpPackageVersion)" />
|
||||
<ExternalDependency Include="System.Net.WebSockets.WebSocketProtocol" Version="$(SystemNetWebSocketsWebSocketProtocolPackageVersion)" />
|
||||
<ExternalDependency Include="System.Numerics.Vectors" Version="$(SystemNumericsVectorsPackageVersion)" />
|
||||
<ExternalDependency Include="System.Reactive.Linq" Version="$(SystemReactiveLinqPackageVersion)" />
|
||||
<ExternalDependency Include="System.Reflection.Emit" Version="$(SystemReflectionEmitPackageVersion)" />
|
||||
<ExternalDependency Include="System.Reflection.Metadata" Version="$(SystemReflectionMetadataPackageVersion)" />
|
||||
<ExternalDependency Include="System.Runtime.CompilerServices.Unsafe" Version="$(SystemRuntimeCompilerServicesUnsafePackageVersion)" />
|
||||
<ExternalDependency Include="System.Runtime.InteropServices.RuntimeInformation" Version="$(SystemRuntimeInteropServicesRuntimeInformationPackageVersion)" />
|
||||
<ExternalDependency Include="System.Security.Cryptography.Cng" Version="$(SystemSecurityCryptographyCngPackageVersion)" />
|
||||
<ExternalDependency Include="System.Security.Cryptography.Xml" Version="$(SystemSecurityCryptographyXmlPackageVersion)" />
|
||||
<ExternalDependency Include="System.Security.Permissions" Version="$(SystemSecurityPermissionsPackageVersion)" />
|
||||
<ExternalDependency Include="System.Security.Principal.Windows" Version="$(SystemSecurityPrincipalWindowsPackageVersion)" />
|
||||
<ExternalDependency Include="System.ServiceProcess.ServiceController" Version="$(SystemServiceProcessServiceControllerPackageVersion)" />
|
||||
<ExternalDependency Include="System.Text.Encodings.Web" Version="$(SystemTextEncodingsWebPackageVersion)" />
|
||||
<ExternalDependency Include="System.Threading.Channels" Version="$(SystemThreadingChannelsPackageVersion)" />
|
||||
<ExternalDependency Include="System.Threading.Tasks.Dataflow" Version="$(SystemThreadingTasksDataflowPackageVersion)" />
|
||||
<ExternalDependency Include="System.Threading.Tasks.Extensions" Version="$(SystemThreadingTasksExtensionsPackageVersion)" />
|
||||
<ExternalDependency Include="System.ValueTuple" Version="$(SystemValueTuplePackageVersion)" />
|
||||
<ExternalDependency Include="Utf8Json" Version="$(Utf8JsonPackageVersion)" />
|
||||
<ExternalDependency Include="WindowsAzure.Storage" Version="$(WindowsAzureStoragePackageVersion)" />
|
||||
<ExternalDependency Include="xunit.abstractions" Version="$(XunitAbstractionsPackageVersion)" />
|
||||
<ExternalDependency Include="xunit.analyzers" Version="$(XunitAnalyzersPackageVersion)" />
|
||||
<ExternalDependency Include="xunit.assert" Version="$(XunitAssertPackageVersion)" />
|
||||
<ExternalDependency Include="xunit.core" Version="$(XunitCorePackageVersion)" />
|
||||
<ExternalDependency Include="xunit.extensibility.core" Version="$(XunitExtensibilityCorePackageVersion)" />
|
||||
<ExternalDependency Include="xunit.extensibility.execution" Version="$(XunitExtensibilityExecutionPackageVersion)" />
|
||||
<ExternalDependency Include="xunit.runner.visualstudio" Version="$(XunitRunnerVisualstudioPackageVersion)" />
|
||||
<ExternalDependency Include="xunit" Version="$(XunitPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Internal.AspNetCore.Universe.Lineup</id>
|
||||
<version>$version$</version>
|
||||
<authors>Microsoft</authors>
|
||||
<description>This package used to unify ASP.NET Core package versions across all Universe repos. Internal use only.</description>
|
||||
<packageTypes>
|
||||
<packageType name="lineup" />
|
||||
</packageTypes>
|
||||
</metadata>
|
||||
<files>
|
||||
<file src="$dependenciesPropsFile$" target="build/dependencies.props" />
|
||||
<file src="$brandingPropsFile$" target="build/branding.props" />
|
||||
</files>
|
||||
</package>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<!--
|
||||
This ensures the build number is a time-based number for local builds.
|
||||
This is important for local builds of Universe which need to ensure repo-to-repo
|
||||
builds are using new articacts, not ones from the global cache.
|
||||
-->
|
||||
<IncrementalVersion>true</IncrementalVersion>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<!-- This repo does not have solutions to build -->
|
||||
<DisableDefaultTargets>true</DisableDefaultTargets>
|
||||
|
||||
<SkipTests>false</SkipTests>
|
||||
<SkipTests Condition="'$(CompileOnly)' == 'true'">true</SkipTests>
|
||||
<IsFinalBuild Condition="'$(IsFinalBuild)' == ''">false</IsFinalBuild>
|
||||
|
||||
<SubmoduleRoot>$(RepositoryRoot)modules\</SubmoduleRoot>
|
||||
|
||||
<DependencyPackageDir>$(RepositoryRoot).deps\build\</DependencyPackageDir>
|
||||
<SignedDependencyPackageDir>$(RepositoryRoot).deps\Signed\Packages\</SignedDependencyPackageDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<IntermediateInstaller Include="win-x86" FileExt=".zip" />
|
||||
<IntermediateInstaller Include="win-x86" FileExt=".wixlib" />
|
||||
<IntermediateInstaller Include="win-x64" FileExt=".zip" />
|
||||
<IntermediateInstaller Include="win-x64" FileExt=".wixlib" />
|
||||
<IntermediateInstaller Include="osx-x64" FileExt=".tar.gz" />
|
||||
<IntermediateInstaller Include="linux-x64" FileExt=".tar.gz" />
|
||||
<IntermediateInstaller Include="linux-arm" FileExt=".tar.gz" />
|
||||
<IntermediateInstaller Include="linux-arm64" FileExt=".tar.gz" />
|
||||
<IntermediateInstaller Include="linux-musl-x64" FileExt=".tar.gz" />
|
||||
|
||||
<NativeInstaller Include="win-x86" FileExt=".exe" />
|
||||
<NativeInstaller Include="win-x86" FileExt=".zip" />
|
||||
<NativeInstaller Include="win-x64" FileExt=".exe" />
|
||||
<NativeInstaller Include="win-x64" FileExt=".zip" />
|
||||
<NativeInstaller Include="osx-x64" FileExt=".tar.gz" />
|
||||
<NativeInstaller Include="linux-x64" FileExt=".tar.gz" />
|
||||
<NativeInstaller Include="linux-arm" FileExt=".tar.gz" />
|
||||
<NativeInstaller Include="linux-arm64" FileExt=".tar.gz" />
|
||||
<NativeInstaller Include="linux-musl-x64" FileExt=".tar.gz" />
|
||||
<NativeInstaller Include="x64" FileExt=".deb" />
|
||||
<NativeInstaller Include="x64" FileExt=".rpm" />
|
||||
<NativeInstaller Include="rh.rhel.7-x64" FileExt=".rpm" />
|
||||
|
||||
<SharedFrameworkName Include="Microsoft.AspNetCore.All" />
|
||||
<SharedFrameworkName Include="Microsoft.AspNetCore.App" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<DotNetCoreRuntime Include="$(MicrosoftNETCoreAppPackageVersion)"
|
||||
Feed="$(DotNetAssetRootUrl)"
|
||||
FeedCredential="$(DotNetAssetRootAccessTokenSuffix)" />
|
||||
|
||||
<!-- These items are temporary, they should be removed when our repos update to netcoreapp3.0 -->
|
||||
<!-- There is no linux-musl in 2.0. This was new in 2.1. -->
|
||||
<DotNetCoreRuntime Include="$(MicrosoftNETCoreApp20PackageVersion)" Condition="'$(SharedFXRid)' != 'linux-musl-x64'" />
|
||||
<DotNetCoreRuntime Include="$(MicrosoftNETCoreApp21PackageVersion)" />
|
||||
<DotNetCoreRuntime Include="$(MicrosoftNETCoreApp22PackageVersion)" />
|
||||
|
||||
<DotNetCoreRuntime Condition="'$(OS)' == 'Windows_NT'"
|
||||
Include="$(MicrosoftNETCoreApp30PackageVersion)"
|
||||
Arch="x86"
|
||||
Feed="$(DotNetAssetRootUrl)"
|
||||
FeedCredential="$(DotNetAssetRootAccessTokenSuffix)" />
|
||||
|
||||
<!--
|
||||
The build doesn't support compiling the shared runtime on one machine along with running tests,
|
||||
so this is enables installing the shared runtime from a previous build.
|
||||
-->
|
||||
<AspNetCoreRuntime Include="$(PackageVersion)" Feed="$(AspNetCoreFxFeed)" Condition="'$(InstallSharedRuntimeFromPreviousBuild)' == 'true'" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Properties for publishing -->
|
||||
<PropertyGroup>
|
||||
<!-- myget = non-orchestrated builds -->
|
||||
<PublishToMyGet Condition=" $(PublishType.Contains('myget')) ">true</PublishToMyGet>
|
||||
<!-- azure = non-orchestrated builds -->
|
||||
<PublishToAzureFeed Condition="$(PublishType.Contains('azure'))">true</PublishToAzureFeed>
|
||||
|
||||
<!-- blob = orchestrated builds -->
|
||||
<PublishToTransportFeed Condition="$(PublishType.Contains('blob'))">true</PublishToTransportFeed>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="sources.props" />
|
||||
<Import Project="external-dependencies.props" />
|
||||
<Import Project="artifacts.props" />
|
||||
<Import Project="submodules.props" />
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,281 @@
|
|||
<Project>
|
||||
<Import Project="RepositoryBuild.targets" />
|
||||
<Import Project="PackageArchive.targets" />
|
||||
<Import Project="AzureIntegration.targets" />
|
||||
<Import Project="SharedFx.targets" />
|
||||
<Import Project="SharedFxInstaller.targets" />
|
||||
<Import Project="Publish.targets" />
|
||||
<Import Project="buildorder.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<GeneratedPackageVersionPropsPath>$(IntermediateDir)dependencies.g.props</GeneratedPackageVersionPropsPath>
|
||||
<GeneratedRestoreSourcesPropsPath>$(IntermediateDir)sources.g.props</GeneratedRestoreSourcesPropsPath>
|
||||
<GeneratedBrandingPropsPath>$(IntermediateDir)branding.g.props</GeneratedBrandingPropsPath>
|
||||
|
||||
<PrepareDependsOn>SetTeamCityBuildNumberToVersion;$(PrepareDependsOn);VerifyPackageArtifactConfig;VerifyExternalDependencyConfig;PrepareOutputPaths</PrepareDependsOn>
|
||||
<CleanDependsOn>$(CleanDependsOn);CleanArtifacts;CleanUniverseArtifacts</CleanDependsOn>
|
||||
<RestoreDependsOn>$(RestoreDependsOn);InstallDotNet</RestoreDependsOn>
|
||||
<CompileDependsOn>$(CompileDependsOn);BuildRepositories</CompileDependsOn>
|
||||
<PackageDependsOn Condition="'$(TestOnly)' != 'true'">$(PackageDependsOn);BuildMetapackages;CheckExpectedPackagesExist</PackageDependsOn>
|
||||
<TestDependsOn>$(TestDependsOn);_TestRepositories</TestDependsOn>
|
||||
<GetArtifactInfoDependsOn>$(GetArtifactInfoDependsOn);ResolveRepoInfo</GetArtifactInfoDependsOn>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="PrepareOutputPaths">
|
||||
<MakeDir Directories="$(ArtifactsDir);$(BuildDir)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="ResolveRepoInfo" DependsOnTargets="_PrepareRepositories;GetMetapackageArtifactInfo;GetLineupPackageInfo">
|
||||
<!-- We need to pass the NETCoreApp package versions to msbuild so that it doesn't complain about us using a different one than it was restored against. -->
|
||||
<PropertyGroup>
|
||||
<DesignTimeBuildProps>MicrosoftNETCoreAppPackageVersion=$(MicrosoftNETCoreAppPackageVersion);</DesignTimeBuildProps>
|
||||
<DesignTimeBuildProps>$(DesignTimeBuildProps);MicrosoftNETCoreApp30PackageVersion=$(MicrosoftNETCoreApp30PackageVersion);</DesignTimeBuildProps>
|
||||
<DesignTimeBuildProps>$(DesignTimeBuildProps);MicrosoftNETCoreApp22PackageVersion=$(MicrosoftNETCoreApp22PackageVersion);</DesignTimeBuildProps>
|
||||
<DesignTimeBuildProps>$(DesignTimeBuildProps);MicrosoftNETCoreApp21PackageVersion=$(MicrosoftNETCoreApp21PackageVersion);</DesignTimeBuildProps>
|
||||
<DesignTimeBuildProps>$(DesignTimeBuildProps);MicrosoftNETCoreApp20PackageVersion=$(MicrosoftNETCoreApp20PackageVersion);</DesignTimeBuildProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)"
|
||||
Targets="GetArtifactInfo"
|
||||
Properties="$(DesignTimeBuildProps);RepositoryRoot=%(Repository.RootPath);Configuration=$(Configuration);BuildNumber=$(BuildNumber);DesignTimeBuild=true"
|
||||
ContinueOnError="WarnAndContinue"
|
||||
Condition="'%(Repository.Identity)' != ''">
|
||||
<Output TaskParameter="TargetOutputs" ItemName="ArtifactInfo" />
|
||||
</MSBuild>
|
||||
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)"
|
||||
Targets="ResolveSolutions"
|
||||
Properties="RepositoryRoot=%(Repository.RootPath);Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
|
||||
ContinueOnError="WarnAndContinue"
|
||||
Condition="'%(Repository.Identity)' != ''">
|
||||
<Output TaskParameter="TargetOutputs" ItemName="Solution" Condition="'%(Repository.Build)' == 'true'" />
|
||||
<Output TaskParameter="TargetOutputs" ItemName="_NoBuildSolution" Condition="'%(Repository.Build)' != 'true'" />
|
||||
</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="$(DesignTimeBuildProps);RepositoryRoot=%(ShippedRepository.RootPath);Configuration=$(Configuration);BuildNumber=$(BuildNumber);IsFinalBuild=true;DesignTimeBuild=true"
|
||||
ContinueOnError="WarnAndContinue"
|
||||
Condition="'%(ShippedRepository.Identity)' != ''">
|
||||
<Output TaskParameter="TargetOutputs" ItemName="ShippedArtifactInfo" />
|
||||
</MSBuild>
|
||||
<MSBuild Projects="$(MSBuildProjectFullPath)"
|
||||
Targets="ResolveSolutions"
|
||||
Properties="RepositoryRoot=%(ShippedRepository.RootPath);Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
|
||||
ContinueOnError="WarnAndContinue"
|
||||
Condition="'%(ShippedRepository.Identity)' != ''">
|
||||
<Output TaskParameter="TargetOutputs" ItemName="_ShippedSolution" />
|
||||
</MSBuild>
|
||||
|
||||
<ItemGroup>
|
||||
<_Temp Remove="@(_Temp)" />
|
||||
<_Temp Include="@(PackageArtifact)" />
|
||||
<PackageArtifact Remove="@(PackageArtifact)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Move SourceFiles="%(SubmoduleGlobalJsonFiles.BackupPath)" DestinationFiles="%(SubmoduleGlobalJsonFiles.Identity)" Condition="Exists(%(SubmoduleGlobalJsonFiles.BackupPath))" />
|
||||
|
||||
<!-- Join required because shipping category is stored in universe (PackageArtifact), but information about package ID and version comes from repos (ArtifactInfo). -->
|
||||
<RepoTasks.JoinItems
|
||||
Left="@(_Temp)"
|
||||
LeftMetadata="*"
|
||||
Right="@(ArtifactInfo->WithMetadataValue('ArtifactType','NuGetPackage'));@(ShippedArtifactInfo->WithMetadataValue('ArtifactType','NuGetPackage'))"
|
||||
RightKey="PackageId"
|
||||
RightMetadata="Version">
|
||||
<Output TaskParameter="JoinResult" ItemName="PackageArtifact" />
|
||||
</RepoTasks.JoinItems>
|
||||
|
||||
<ItemGroup>
|
||||
<_PackageArtifactWithoutMatchingInfo Include="@(_Temp)" Exclude="@(PackageArtifact)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="Could not detect version information for package id:%0A * @(_PackageArtifactWithoutMatchingInfo, '%0A * ')"
|
||||
Condition="@(_PackageArtifactWithoutMatchingInfo->Count()) != 0" />
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Adjust the list of what is considered external vs locally built. -->
|
||||
<ExternalDependency Include="%(ShippedArtifactInfo.PackageId)" Condition="'%(ShippedArtifactInfo.ArtifactType)' == 'NuGetPackage'">
|
||||
<Version>%(ShippedArtifactInfo.Version)</Version>
|
||||
</ExternalDependency>
|
||||
|
||||
<!-- capture the original list of PackageArtifacts -->
|
||||
<_PackageArtifactSpec Include="@(PackageArtifact)" />
|
||||
|
||||
<PackageArtifact Remove="%(ShippedArtifactInfo.PackageId)" Condition="'%(ShippedArtifactInfo.ArtifactType)' == 'NuGetPackage'" />
|
||||
|
||||
<Solution Update="@(Solution)" Build="true" IsPatching="true" />
|
||||
<_ShippedSolution Update="@(_ShippedSolution)" Build="false" IsPatching="false" />
|
||||
<_NoBuildSolution Update="@(_NoBuildSolution)" Build="false" />
|
||||
<Solution Include="@(_NoBuildSolution);@(_ShippedSolution)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="No solutions were found in '$(SubmoduleRoot)'. Did you forget to clone the submodules? Run `git submodule update --init`." Condition="@(Solution->Count()) == 0" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GetLineupPackageInfo">
|
||||
<ItemGroup>
|
||||
<ArtifactInfo Include="$(BuildDir)Internal.AspNetCore.Universe.Lineup.$(PackageVersion).nupkg">
|
||||
<ArtifactType>NuGetPackage</ArtifactType>
|
||||
<PackageId>Internal.AspNetCore.Universe.Lineup</PackageId>
|
||||
<Version>$(PackageVersion)</Version>
|
||||
<Category>noship</Category>
|
||||
<IsLineup>true</IsLineup>
|
||||
</ArtifactInfo>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="GeneratePropsFiles" DependsOnTargets="PrepareOutputPaths;GetArtifactInfo">
|
||||
<ItemGroup>
|
||||
<_LineupPackages Include="@(ExternalDependency)" />
|
||||
<_LineupPackages Include="%(ArtifactInfo.PackageId)" Version="%(ArtifactInfo.Version)" Condition=" '%(ArtifactInfo.ArtifactType)' == 'NuGetPackage' " />
|
||||
|
||||
<_RestoreSources Include="$(DependencyPackageDir)" Condition="'$(DependencyPackageDir)' != '' AND Exists('$(DependencyPackageDir)')" />
|
||||
<_RestoreSources Include="$(SignedDependencyPackageDir)" Condition="'$(SignedDependencyPackageDir)' != '' AND Exists('$(SignedDependencyPackageDir)')" />
|
||||
<_RestoreSources Include="$(BuildDir)" />
|
||||
<_RestoreSources Include="$(RestoreSources)" />
|
||||
</ItemGroup>
|
||||
|
||||
<GeneratePackageVersionPropsFile
|
||||
Packages="@(_LineupPackages)"
|
||||
OutputPath="$(GeneratedPackageVersionPropsPath)" />
|
||||
|
||||
<Copy SourceFiles="$(GeneratedPackageVersionPropsPath)" DestinationFolder="$(ArtifactsDir)" />
|
||||
|
||||
<RepoTasks.GenerateRestoreSourcesPropsFile
|
||||
Sources="@(_RestoreSources)"
|
||||
OutputPath="$(GeneratedRestoreSourcesPropsPath)" />
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Generate an MSBuild file that can be imported and used by Windows Installer builds to keep our versions consistent. -->
|
||||
<BrandingPropsContent>
|
||||
<![CDATA[
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<AspNetCoreMajorVersion>$(AspNetCoreMajorVersion)</AspNetCoreMajorVersion>
|
||||
<AspNetCoreMinorVersion>$(AspNetCoreMinorVersion)</AspNetCoreMinorVersion>
|
||||
<AspNetCorePatchVersion>$(AspNetCorePatchVersion)</AspNetCorePatchVersion>
|
||||
<AspNetCorePreReleaseVersionLabel>$(PreReleaseLabel)</AspNetCorePreReleaseVersionLabel>
|
||||
<AspNetCoreBuildNumber>$(BuildNumber)</AspNetCoreBuildNumber>
|
||||
<AspNetCoreBrandingVersion>$(PackageBrandingVersion)</AspNetCoreBrandingVersion>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
]]>
|
||||
</BrandingPropsContent>
|
||||
</PropertyGroup>
|
||||
|
||||
<WriteLinesToFile File="$(GeneratedBrandingPropsPath)" Overwrite="true" Lines="$(BrandingPropsContent)"/>
|
||||
|
||||
<Copy SourceFiles="$(GeneratedPackageVersionPropsPath);$(GeneratedBrandingPropsPath)" DestinationFolder="$(ArtifactsDir)" />
|
||||
|
||||
<PackNuSpec NuSpecPath="$(MSBuildThisFileDirectory)lineups\Internal.AspNetCore.Universe.Lineup.nuspec"
|
||||
DestinationFolder="$(BuildDir)"
|
||||
Overwrite="true"
|
||||
Properties="version=$(PackageVersion);dependenciesPropsFile=$(GeneratedPackageVersionPropsPath);brandingPropsFile=$(GeneratedBrandingPropsPath)">
|
||||
<Output TaskParameter="Packages" ItemName="LineupPackage" />
|
||||
</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)" />
|
||||
<Repository Update="@(Repository)" Build="false" />
|
||||
<Repository
|
||||
Update="@(Repository)"
|
||||
Condition="'@(Repository)'=='@(_RepositoriesToInclude)' AND '%(Identity)'!=''"
|
||||
Build="true" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(KOREBUILD_REPOSITORY_EXCLUDE)'!=''">
|
||||
<_RepositoriesToExclude Include="$(KOREBUILD_REPOSITORY_EXCLUDE)" />
|
||||
<Repository
|
||||
Update="@(Repository)"
|
||||
Condition="'@(Repository)'=='@(_RepositoriesToExclude)' AND '%(Identity)'!=''"
|
||||
Build="false" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="KOREBUILD_REPOSITORY_EXCLUDE AND KOREBUILD_REPOSITORY_INCLUDE are specified."
|
||||
Condition="'$(KOREBUILD_REPOSITORY_INCLUDE)' != '' AND '$(KOREBUILD_REPOSITORY_EXCLUDE)' != ''" />
|
||||
|
||||
<ItemGroup>
|
||||
<Repository Update="%(Identity)" RootPath="$(SubmoduleRoot)%(Identity)\" Condition="'%(Identity)' != '' AND '%(RootPath)' == ''" />
|
||||
<ShippedRepository Update="%(Identity)" RootPath="$(SubmoduleRoot)%(Identity)\" Condition="'%(Identity)' != '' AND '%(RootPath)' == ''" />
|
||||
|
||||
<SubmoduleGlobalJsonFiles Include="%(Repository.RootPath)global.json" BackupPath="$(IntermediateDir)%(Repository.Identity)-global.json" Condition="'%(Repository.Identity)' != ''"/>
|
||||
<SubmoduleGlobalJsonFiles Include="%(ShippedRepository.RootPath)global.json" BackupPath="$(IntermediateDir)%(ShippedRepository.Identity)-global.json" Condition="'%(ShippedRepository.Identity)' != ''"/>
|
||||
</ItemGroup>
|
||||
|
||||
<Move SourceFiles="%(SubmoduleGlobalJsonFiles.Identity)" DestinationFiles="%(SubmoduleGlobalJsonFiles.BackupPath)" Condition="Exists(%(SubmoduleGlobalJsonFiles.Identity))" />
|
||||
</Target>
|
||||
|
||||
<Target Name="BuildRepositories"
|
||||
DependsOnTargets="_PrepareRepositories;GeneratePropsFiles;ComputeGraph;_BuildRepositories" />
|
||||
|
||||
<Target Name="ListExpectedPackages" DependsOnTargets="ResolveRepoInfo">
|
||||
<WriteLinesToFile File="$(RepositoryRoot)artifacts\packages.csv" Lines="PackageId,Version;@(ArtifactInfo->WithMetadataValue('ArtifactType', 'NuGetPackage')->'%(PackageId),%(Version)')" Overwrite="true" />
|
||||
</Target>
|
||||
|
||||
<Target Name="ComputeGraph" DependsOnTargets="ResolveRepoInfo;GeneratePropsFiles">
|
||||
<ItemGroup>
|
||||
<_UndeclaredPackageArtifact Include="%(ArtifactInfo.PackageId)" Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetPackage'" />
|
||||
<_UndeclaredPackageArtifact Remove="@(PackageArtifact)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="Undeclared package artifacts. Add these to artifacts.props:%0A - @(_UndeclaredPackageArtifact, '%0A - ')"
|
||||
Condition=" @(_UndeclaredPackageArtifact->Count()) != 0 " />
|
||||
|
||||
<Message Text="Repository build order:" Importance="high" />
|
||||
<Message Text="%(RepositoryBuildOrder.Order). @(RepositoryBuildOrder, ', ')" Importance="high" />
|
||||
</Target>
|
||||
|
||||
<Target Name="VerifyPackageArtifactConfig">
|
||||
<Error Text="Invalid configuration of %(PackageArtifact.Identity). PackageArtifact must have the 'Category' metadata."
|
||||
Condition="'%(PackageArtifact.Category)' == '' " />
|
||||
|
||||
<Error Text="Invalid configuration of %(PackageArtifact.Identity). Packages marked as LZMA='true' must be Category='ship'."
|
||||
Condition="'%(PackageArtifact.Category)' != 'ship' AND '%(PackageArtifact.LZMA)' == 'true' " />
|
||||
|
||||
<Error Text="Invalid configuration of %(PackageArtifact.Identity). Packages marked as AppMetapackage='true' must be Category='ship'."
|
||||
Condition="'%(PackageArtifact.Category)' != 'ship' AND '%(PackageArtifact.AppMetapackage)' == 'true' " />
|
||||
|
||||
<Error Text="Invalid configuration of %(PackageArtifact.Identity). Packages marked as AllMetapackage='true' must be Category='ship'."
|
||||
Condition="'%(PackageArtifact.Category)' != 'ship' AND '%(PackageArtifact.AllMetapackage)' == 'true' " />
|
||||
|
||||
<Error Text="Invalid configuration of %(PackageArtifact.Identity). Packages marked as AppMetapackage='true' must also be marked as AllMetapackage='true'."
|
||||
Condition="'%(PackageArtifact.AppMetapackage)' == 'true' AND '%(PackageArtifact.AllMetapackage)' != 'true' " />
|
||||
</Target>
|
||||
|
||||
<Target Name="VerifyExternalDependencyConfig">
|
||||
<RepoTasks.CheckVersionOverrides DotNetPackageVersionPropsPath="$(DotNetPackageVersionPropsPath)"
|
||||
DependenciesFile="$(MSBuildThisFileDirectory)dependencies.props"
|
||||
Condition="'$(DotNetPackageVersionPropsPath)' != ''" />
|
||||
|
||||
<Error Text="Missing Version metadata for the following external dependencies: %0A - @(ExternalDependency->WithMetadataValue('Version', ''), '%0A - '). "
|
||||
Condition=" @(ExternalDependency->WithMetadataValue('Version', '')->Count()) != 0 " />
|
||||
</Target>
|
||||
|
||||
<Target Name="CheckUniverse"
|
||||
DependsOnTargets="ComputeGraph;VerifyPackageArtifactConfig;VerifyAllReposHaveNuGetPackageVerifier" />
|
||||
|
||||
<Target Name="CheckExpectedPackagesExist">
|
||||
<ItemGroup>
|
||||
<PackageArtifactFile Include="$(BuildDir)*.nupkg" Exclude="$(BuildDir)*.symbols.nupkg" />
|
||||
</ItemGroup>
|
||||
|
||||
<RepoTasks.CheckExpectedPackagesExist Packages="@(PackageArtifact)" Files="@(PackageArtifactFile)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="VerifyAllReposHaveNuGetPackageVerifier" DependsOnTargets="_PrepareRepositories">
|
||||
<Error Condition="'%(Repository.Identity)' != '' AND !Exists('%(Repository.RootPath)NuGetPackageVerifier.json')"
|
||||
Text="Repository %(Repository.Identity) is missing NuGetPackageVerifier.json. Expected file to exist in %(Repository.RootPath)NuGetPackageVerifier.json" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<Project>
|
||||
|
||||
<Import Project="$(DotNetRestoreSourcePropsPath)" Condition="'$(DotNetRestoreSourcePropsPath)' != ''"/>
|
||||
|
||||
<PropertyGroup>
|
||||
<RestoreSources>
|
||||
$(DotNetAdditionalRestoreSources);
|
||||
$(DotNetRestoreSources);
|
||||
</RestoreSources>
|
||||
<RestoreSources Condition=" '$(DotNetBuildOffline)' != 'true' ">
|
||||
$(RestoreSources);
|
||||
https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json;
|
||||
https://api.nuget.org/v3/index.json;
|
||||
</RestoreSources>
|
||||
<RestoreSources Condition=" '$(DotNetBuildOffline)' != 'true' AND '$(DisableMyGetRestoreSources)' != 'true' ">
|
||||
$(RestoreSources);
|
||||
https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/aspnetcore-master/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/roslyn/api/v3/index.json;
|
||||
https://vside.myget.org/F/vssdk/api/v3/index.json;
|
||||
https://vside.myget.org/F/vsmac/api/v3/index.json
|
||||
</RestoreSources>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
<Project>
|
||||
<ItemDefinitionGroup>
|
||||
<Repository>
|
||||
<Build>true</Build>
|
||||
|
||||
<!--
|
||||
Specifies the ruleset used to determine if a repo should build in a patch update, or not.
|
||||
The default is ProductChangesOnly.
|
||||
|
||||
Rulesets:
|
||||
ProductChangeOnly
|
||||
Only produce new package versions if there were changes to product code.
|
||||
Examples: this is the default. Most repos should use this policy.
|
||||
|
||||
CascadeVersion
|
||||
Produce new package versions if there were changes to product code, or if one of the package dependencies has updated.
|
||||
Examples: metapackages which are not top-level, but should still be used to help users get the latest transitive set of dependencies
|
||||
|
||||
AlwaysUpdate
|
||||
Packages should update in every patch.
|
||||
Examples: top-level metapackages and templates.
|
||||
|
||||
-->
|
||||
<PatchPolicy>ProductChangesOnly</PatchPolicy>
|
||||
<RootPath></RootPath>
|
||||
</Repository>
|
||||
<ShippedRepository>
|
||||
<Build>false</Build>
|
||||
<PatchPolicy>ProductChangesOnly</PatchPolicy>
|
||||
<RootPath></RootPath>
|
||||
</ShippedRepository>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<TestsRequiredTheSharedRuntime Condition="'$(RepositoryToBuild)' == 'Templating'">true</TestsRequiredTheSharedRuntime>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Repository Include="AADIntegration" />
|
||||
<Repository Include="Antiforgery" />
|
||||
<Repository Include="AzureIntegration" />
|
||||
<Repository Include="BasicMiddleware" />
|
||||
<Repository Include="BrowserLink" />
|
||||
<Repository Include="Caching" />
|
||||
<Repository Include="Common" />
|
||||
<Repository Include="Configuration" />
|
||||
<Repository Include="CORS" />
|
||||
<Repository Include="DataProtection" RootPath="$(RepositoryRoot)src\DataProtection\" />
|
||||
<Repository Include="DependencyInjection" />
|
||||
<Repository Include="Diagnostics" />
|
||||
<Repository Include="DotNetTools" />
|
||||
<Repository Include="EntityFrameworkCore" />
|
||||
<Repository Include="EventNotification" />
|
||||
<Repository Include="FileSystem" />
|
||||
<Repository Include="Hosting" />
|
||||
<Repository Include="HtmlAbstractions" />
|
||||
<Repository Include="HttpAbstractions" />
|
||||
<Repository Include="HttpClientFactory" />
|
||||
<Repository Include="HttpSysServer" />
|
||||
<Repository Include="Identity" />
|
||||
<Repository Include="IISIntegration" />
|
||||
<Repository Include="JavaScriptServices" />
|
||||
<Repository Include="JsonPatch" />
|
||||
<Repository Include="KestrelHttpServer" />
|
||||
<Repository Include="Localization" />
|
||||
<Repository Include="Logging" />
|
||||
<Repository Include="MetaPackages" PatchPolicy="CascadeVersions" />
|
||||
<Repository Include="Microsoft.Data.Sqlite" />
|
||||
<Repository Include="Mvc" />
|
||||
<Repository Include="Options" />
|
||||
<Repository Include="Razor" />
|
||||
<Repository Include="ResponseCaching" />
|
||||
<Repository Include="Routing" />
|
||||
<Repository Include="Scaffolding" PatchPolicy="AlwaysUpdate" />
|
||||
<Repository Include="Security" />
|
||||
<Repository Include="Session" />
|
||||
<Repository Include="SignalR" />
|
||||
<Repository Include="StaticFiles" />
|
||||
<Repository Include="Templating" PatchPolicy="AlwaysUpdateAndCascadeVersions" />
|
||||
<Repository Include="WebSockets" />
|
||||
|
||||
<!-- Test-only repos -->
|
||||
<Repository Include="AuthSamples" PatchPolicy="AlwaysUpdateAndCascadeVersions" />
|
||||
<Repository Include="MusicStore" PatchPolicy="AlwaysUpdateAndCascadeVersions" />
|
||||
<Repository Include="ServerTests" PatchPolicy="AlwaysUpdateAndCascadeVersions" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
@ -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.Linq;
|
||||
using System.Xml;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
using NuGet.Versioning;
|
||||
using RepoTasks.Utilities;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class AddMetapackageReferences : Task
|
||||
{
|
||||
[Required]
|
||||
public string ReferencePackagePath { get; set; }
|
||||
|
||||
[Required]
|
||||
public string MetapackageReferenceType { get; set; }
|
||||
|
||||
[Required]
|
||||
public string DependencyVersionRangeType { get; set; }
|
||||
|
||||
// MSBuild doesn't allow binding to enums directly.
|
||||
private enum VersionRangeType
|
||||
{
|
||||
Minimum, // [1.1.1, )
|
||||
MajorMinor, // [1.1.1, 1.2.0)
|
||||
}
|
||||
|
||||
[Required]
|
||||
public ITaskItem[] PackageArtifacts { get; set; }
|
||||
|
||||
[Required]
|
||||
public ITaskItem[] ExternalDependencies { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
if (!Enum.TryParse<VersionRangeType>(DependencyVersionRangeType, out var dependencyVersionType))
|
||||
{
|
||||
Log.LogError("Unexpected value {0} for DependencyVersionRangeType", DependencyVersionRangeType);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Parse input
|
||||
var metapackageArtifacts = PackageArtifacts.Where(p => p.GetMetadata(MetapackageReferenceType) == "true");
|
||||
var externalArtifacts = ExternalDependencies.Where(p => p.GetMetadata(MetapackageReferenceType) == "true");
|
||||
|
||||
var xmlDoc = new XmlDocument();
|
||||
xmlDoc.Load(ReferencePackagePath);
|
||||
|
||||
// Project
|
||||
var projectElement = xmlDoc.FirstChild;
|
||||
|
||||
// Items
|
||||
var itemGroupElement = xmlDoc.CreateElement("ItemGroup");
|
||||
Log.LogMessage(MessageImportance.High, $"{MetapackageReferenceType} will include the following packages");
|
||||
|
||||
foreach (var package in metapackageArtifacts)
|
||||
{
|
||||
var packageName = package.ItemSpec;
|
||||
var packageVersion = package.GetMetadata("Version");
|
||||
if (string.IsNullOrEmpty(packageVersion))
|
||||
{
|
||||
Log.LogError("Missing version information for package {0}", packageName);
|
||||
continue;
|
||||
}
|
||||
|
||||
var packageVersionValue = GetDependencyVersion(dependencyVersionType, packageName, packageVersion);
|
||||
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersionValue}");
|
||||
|
||||
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
|
||||
packageReferenceElement.SetAttribute("Include", packageName);
|
||||
packageReferenceElement.SetAttribute("Version", packageVersionValue);
|
||||
packageReferenceElement.SetAttribute("PrivateAssets", "None");
|
||||
|
||||
itemGroupElement.AppendChild(packageReferenceElement);
|
||||
}
|
||||
|
||||
foreach (var package in externalArtifacts)
|
||||
{
|
||||
var packageName = package.ItemSpec;
|
||||
var packageVersion = package.GetMetadata("Version");
|
||||
|
||||
if (string.IsNullOrEmpty(packageVersion))
|
||||
{
|
||||
Log.LogError("Missing version information for package {0}", packageName);
|
||||
continue;
|
||||
}
|
||||
|
||||
var packageVersionValue =
|
||||
Enum.TryParse<VersionRangeType>(package.GetMetadata("MetapackageVersionRangeType"), out var packageVersionType)
|
||||
? GetDependencyVersion(packageVersionType, packageName, packageVersion)
|
||||
: GetDependencyVersion(dependencyVersionType, packageName, packageVersion);
|
||||
|
||||
Log.LogMessage(MessageImportance.High, $" - Package: {packageName} Version: {packageVersionValue}");
|
||||
|
||||
var packageReferenceElement = xmlDoc.CreateElement("PackageReference");
|
||||
packageReferenceElement.SetAttribute("Include", packageName);
|
||||
packageReferenceElement.SetAttribute("Version", packageVersionValue);
|
||||
packageReferenceElement.SetAttribute("PrivateAssets", "None");
|
||||
|
||||
itemGroupElement.AppendChild(packageReferenceElement);
|
||||
}
|
||||
|
||||
projectElement.AppendChild(itemGroupElement);
|
||||
|
||||
// Save updated file
|
||||
xmlDoc.AppendChild(projectElement);
|
||||
xmlDoc.Save(ReferencePackagePath);
|
||||
|
||||
return !Log.HasLoggedErrors;
|
||||
}
|
||||
|
||||
private string GetDependencyVersion(VersionRangeType dependencyVersionType, string packageName, string packageVersion)
|
||||
{
|
||||
switch (dependencyVersionType)
|
||||
{
|
||||
case VersionRangeType.MajorMinor:
|
||||
if (!NuGetVersion.TryParse(packageVersion, out var nugetVersion))
|
||||
{
|
||||
Log.LogError("Invalid NuGet version '{0}' for package {1}", packageVersion, packageName);
|
||||
return null;
|
||||
}
|
||||
return $"[{packageVersion}, {nugetVersion.Major}.{nugetVersion.Minor + 1}.0)";
|
||||
case VersionRangeType.Minimum:
|
||||
return packageVersion;
|
||||
default:
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
// 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 System.Text;
|
||||
using Microsoft.Build.Framework;
|
||||
using NuGet.Packaging;
|
||||
using NuGet.Packaging.Core;
|
||||
using RepoTasks.Utilities;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class CheckExpectedPackagesExist : Microsoft.Build.Utilities.Task
|
||||
{
|
||||
/// <summary>
|
||||
/// The item group containing the nuget packages to split in different folders.
|
||||
/// </summary>
|
||||
[Required]
|
||||
public ITaskItem[] Packages { get; set; }
|
||||
|
||||
[Required]
|
||||
public ITaskItem[] Files { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
if (Files?.Length == 0)
|
||||
{
|
||||
Log.LogError("No packages were found.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var expectedPackages = new HashSet<string>(Packages.Select(i => i.ItemSpec), StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
foreach (var file in Files)
|
||||
{
|
||||
PackageIdentity identity;
|
||||
using (var reader = new PackageArchiveReader(file.ItemSpec))
|
||||
{
|
||||
identity = reader.GetIdentity();
|
||||
}
|
||||
|
||||
if (!expectedPackages.Contains(identity.Id))
|
||||
{
|
||||
Log.LogError($"Unexpected package artifact with id: {identity.Id}");
|
||||
continue;
|
||||
}
|
||||
|
||||
expectedPackages.Remove(identity.Id);
|
||||
}
|
||||
|
||||
if (expectedPackages.Count != 0)
|
||||
{
|
||||
var error = new StringBuilder();
|
||||
foreach (var id in expectedPackages)
|
||||
{
|
||||
error.Append(" - ").AppendLine(id);
|
||||
}
|
||||
|
||||
Log.LogError($"Expected the following packages, but they were not found:" + error.ToString());
|
||||
return false;
|
||||
}
|
||||
|
||||
return !Log.HasLoggedErrors;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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.Linq;
|
||||
using Microsoft.Build.Construction;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class CheckVersionOverrides : Task
|
||||
{
|
||||
[Required]
|
||||
public string DotNetPackageVersionPropsPath { get; set; }
|
||||
|
||||
[Required]
|
||||
public string DependenciesFile { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
Log.LogMessage($"Verifying versions set in {DotNetPackageVersionPropsPath} match expected versions set in {DependenciesFile}");
|
||||
|
||||
var versionOverrides = ProjectRootElement.Open(DotNetPackageVersionPropsPath);
|
||||
var dependencies = ProjectRootElement.Open(DependenciesFile);
|
||||
var pinnedVersions = dependencies.PropertyGroups
|
||||
.Where(p => !string.Equals("Package Versions: Auto", p.Label))
|
||||
.SelectMany(p => p.Properties)
|
||||
.ToDictionary(p => p.Name, p => p.Value, StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
foreach (var prop in versionOverrides.Properties)
|
||||
{
|
||||
if (pinnedVersions.TryGetValue(prop.Name, out var pinnedVersion))
|
||||
{
|
||||
if (!string.Equals(pinnedVersion, prop.Value, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
Log.LogError($"The imported package version props file conflicts with a pinned version variable {prop.Name}. Imported value: {prop.Value}, Pinned value: {pinnedVersion}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return !Log.HasLoggedErrors;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
// 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.Threading;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
using Microsoft.DotNet.Archive;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class CreateLzma : Task, ICancelableTask
|
||||
{
|
||||
private readonly CancellationTokenSource _cts = new CancellationTokenSource();
|
||||
|
||||
[Required]
|
||||
public string OutputPath { get; set; }
|
||||
|
||||
[Required]
|
||||
public string[] Sources { get; set; }
|
||||
|
||||
public void Cancel() => _cts.Cancel();
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
var progress = new MSBuildProgressReport(Log, _cts.Token);
|
||||
using (var archive = new IndexedArchive())
|
||||
{
|
||||
foreach (var source in Sources)
|
||||
{
|
||||
if (Directory.Exists(source))
|
||||
{
|
||||
var trimmedSource = source.TrimEnd(new []{ '\\', '/' });
|
||||
Log.LogMessage(MessageImportance.High, $"Adding directory: {trimmedSource}");
|
||||
archive.AddDirectory(trimmedSource, progress);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.LogMessage(MessageImportance.High, $"Adding file: {source}");
|
||||
archive.AddFile(source, Path.GetFileName(source));
|
||||
}
|
||||
}
|
||||
|
||||
archive.Save(OutputPath, progress);
|
||||
}
|
||||
|
||||
return !Log.HasLoggedErrors;
|
||||
}
|
||||
|
||||
private class MSBuildProgressReport : IProgress<ProgressReport>
|
||||
{
|
||||
private TaskLoggingHelper _log;
|
||||
private readonly CancellationToken _cancellationToken;
|
||||
|
||||
public MSBuildProgressReport(TaskLoggingHelper log, CancellationToken cancellationToken)
|
||||
{
|
||||
_log = log;
|
||||
_cancellationToken = cancellationToken;
|
||||
}
|
||||
|
||||
public void Report(ProgressReport value)
|
||||
{
|
||||
var complete = (double)value.Ticks / value.Total;
|
||||
_log.LogMessage(MessageImportance.Low, $"Progress: {value.Phase} - {complete:P}");
|
||||
_cancellationToken.ThrowIfCancellationRequested(); // because LZMA apis don't take a cancellation token, throw from the logger (yes, its ugly, but it works.)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,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 Microsoft.Build.Framework;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
/// <summary>
|
||||
/// Filters a list of .xml files to only those that are .NET Xml docs files
|
||||
/// </summary>
|
||||
public class GetDocXmlFiles : Microsoft.Build.Utilities.Task
|
||||
{
|
||||
[Required]
|
||||
public ITaskItem[] Files { get; set; }
|
||||
|
||||
[Output]
|
||||
public ITaskItem[] XmlDocFiles { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
var xmlDocs = new ConcurrentBag<ITaskItem>();
|
||||
Parallel.ForEach(Files, f =>
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var file = File.OpenRead(f.ItemSpec))
|
||||
using (var reader = new StreamReader(file))
|
||||
{
|
||||
string line;
|
||||
for (var i = 0; i < 2; i++)
|
||||
{
|
||||
line = reader.ReadLine();
|
||||
if (i == 0 && line.StartsWith("<?xml", StringComparison.Ordinal))
|
||||
{
|
||||
line = line.Substring(line.IndexOf("?>") + 2);
|
||||
}
|
||||
|
||||
if (line.StartsWith("<doc>", StringComparison.OrdinalIgnoreCase) || line.StartsWith("<doc xml:", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
xmlDocs.Add(f);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.LogMessage(MessageImportance.Normal, $"Failed to read {f.ItemSpec}: {ex.ToString()}");
|
||||
}
|
||||
|
||||
Log.LogMessage($"Did not detect {f.ItemSpec} as an xml doc file");
|
||||
});
|
||||
|
||||
XmlDocFiles = xmlDocs.ToArray();
|
||||
Log.LogMessage($"Found {XmlDocFiles.Length} xml doc file(s)");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
// 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.Text;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class JoinItems : Task
|
||||
{
|
||||
[Required]
|
||||
public ITaskItem[] Left { get; set; }
|
||||
|
||||
[Required]
|
||||
public ITaskItem[] Right { get; set; }
|
||||
|
||||
// The metadata to use as the new item spec. If not specified, LeftKey is used.
|
||||
public string LeftItemSpec { get; set; }
|
||||
|
||||
// LeftKey and RightKey: The metadata to join on. If not set, then use the ItemSpec
|
||||
public string LeftKey { get; set; }
|
||||
|
||||
public string RightKey { get; set; }
|
||||
|
||||
|
||||
// LeftMetadata and RightMetadata: The metadata names to include in the result. Specify "*" to include all metadata
|
||||
public string[] LeftMetadata { get; set; }
|
||||
|
||||
public string[] RightMetadata { get; set; }
|
||||
|
||||
|
||||
[Output]
|
||||
public ITaskItem[] JoinResult { get; private set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
bool useAllLeftMetadata = LeftMetadata != null && LeftMetadata.Length == 1 && LeftMetadata[0] == "*";
|
||||
bool useAllRightMetadata = RightMetadata != null && RightMetadata.Length == 1 && RightMetadata[0] == "*";
|
||||
var newItemSpec = string.IsNullOrEmpty(LeftItemSpec)
|
||||
? LeftKey
|
||||
: LeftItemSpec;
|
||||
|
||||
JoinResult = Left.Join(Right,
|
||||
item => GetKeyValue(LeftKey, item),
|
||||
item => GetKeyValue(RightKey, item),
|
||||
(left, right) =>
|
||||
{
|
||||
// If including all metadata from left items and none from right items, just return left items directly
|
||||
if (useAllLeftMetadata &&
|
||||
string.IsNullOrEmpty(LeftKey) &&
|
||||
string.IsNullOrEmpty(LeftItemSpec) &&
|
||||
(RightMetadata == null || RightMetadata.Length == 0))
|
||||
{
|
||||
return left;
|
||||
}
|
||||
|
||||
// If including all metadata from right items and none from left items, just return the right items directly
|
||||
if (useAllRightMetadata &&
|
||||
string.IsNullOrEmpty(RightKey) &&
|
||||
string.IsNullOrEmpty(LeftItemSpec) &&
|
||||
(LeftMetadata == null || LeftMetadata.Length == 0))
|
||||
{
|
||||
return right;
|
||||
}
|
||||
|
||||
var ret = new TaskItem(GetKeyValue(newItemSpec, left));
|
||||
|
||||
// Weird ordering here is to prefer left metadata in all cases, as CopyToMetadata doesn't overwrite any existing metadata
|
||||
if (useAllLeftMetadata)
|
||||
{
|
||||
// CopyMetadata adds an OriginalItemSpec, which we don't want. So we subsequently remove it
|
||||
left.CopyMetadataTo(ret);
|
||||
ret.RemoveMetadata("OriginalItemSpec");
|
||||
}
|
||||
|
||||
if (!useAllRightMetadata && RightMetadata != null)
|
||||
{
|
||||
foreach (string name in RightMetadata)
|
||||
{
|
||||
ret.SetMetadata(name, right.GetMetadata(name));
|
||||
}
|
||||
}
|
||||
|
||||
if (!useAllLeftMetadata && LeftMetadata != null)
|
||||
{
|
||||
foreach (string name in LeftMetadata)
|
||||
{
|
||||
ret.SetMetadata(name, left.GetMetadata(name));
|
||||
}
|
||||
}
|
||||
|
||||
if (useAllRightMetadata)
|
||||
{
|
||||
// CopyMetadata adds an OriginalItemSpec, which we don't want. So we subsequently remove it
|
||||
right.CopyMetadataTo(ret);
|
||||
ret.RemoveMetadata("OriginalItemSpec");
|
||||
}
|
||||
|
||||
return (ITaskItem)ret;
|
||||
},
|
||||
StringComparer.OrdinalIgnoreCase).ToArray();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static string GetKeyValue(string key, ITaskItem item)
|
||||
{
|
||||
if (string.IsNullOrEmpty(key))
|
||||
{
|
||||
return item.ItemSpec;
|
||||
}
|
||||
else
|
||||
{
|
||||
return item.GetMetadata(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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 Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Logging;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class FlowLogger : ConsoleLogger
|
||||
{
|
||||
private volatile bool _initialized;
|
||||
|
||||
public FlowLogger()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Initialize(IEventSource eventSource, int nodeCount)
|
||||
{
|
||||
PreInit(eventSource);
|
||||
base.Initialize(eventSource, nodeCount);
|
||||
}
|
||||
|
||||
public override void Initialize(IEventSource eventSource)
|
||||
{
|
||||
PreInit(eventSource);
|
||||
base.Initialize(eventSource);
|
||||
}
|
||||
|
||||
private void PreInit(IEventSource eventSource)
|
||||
{
|
||||
if (_initialized) return;
|
||||
_initialized = true;
|
||||
|
||||
var flowId = GetFlowId();
|
||||
var prefix = $"{flowId,-22}| ";
|
||||
var write = WriteHandler;
|
||||
WriteHandler = msg => write(prefix + msg);
|
||||
|
||||
eventSource.BuildStarted += (o, e) =>
|
||||
{
|
||||
WriteHandler(e.Message + Environment.NewLine);
|
||||
};
|
||||
}
|
||||
|
||||
private string GetFlowId()
|
||||
{
|
||||
var parameters = Parameters?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (parameters == null || parameters.Length == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
const string flowIdParamName = "FlowId=";
|
||||
return parameters
|
||||
.FirstOrDefault(p => p.StartsWith(flowIdParamName, StringComparison.Ordinal))
|
||||
?.Substring(flowIdParamName.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,28 @@
|
|||
// 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 Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class OrderBy : Task
|
||||
{
|
||||
[Required]
|
||||
[Output]
|
||||
public ITaskItem[] Items { get; set; }
|
||||
|
||||
public string Key { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
var key = string.IsNullOrEmpty(Key)
|
||||
? "Identity"
|
||||
: Key;
|
||||
Items = Items.OrderBy(k => k.GetMetadata(key)).ToArray();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
// 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.
|
||||
// Sourced from https://github.com/dotnet/core-setup/tree/be8d8e3486b2bf598ed69d39b1629a24caaba45e/tools-local/tasks, needs to be kept in sync
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
using Microsoft.Extensions.DependencyModel;
|
||||
using NuGet.Common;
|
||||
using NuGet.ProjectModel;
|
||||
using RepoTasks.Utilities;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public partial class ProcessSharedFrameworkDeps : Task
|
||||
{
|
||||
[Required]
|
||||
public string AssetsFilePath { get; set; }
|
||||
|
||||
[Required]
|
||||
public string DepsFilePath { get; set; }
|
||||
|
||||
public string[] PackagesToRemove { get; set; }
|
||||
|
||||
[Required]
|
||||
public string Runtime { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
ExecuteCore();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void ExecuteCore()
|
||||
{
|
||||
DependencyContext context;
|
||||
using (var depsStream = File.OpenRead(DepsFilePath))
|
||||
{
|
||||
context = new DependencyContextJsonReader().Read(depsStream);
|
||||
}
|
||||
|
||||
LockFile lockFile = LockFileUtilities.GetLockFile(AssetsFilePath, NullLogger.Instance);
|
||||
if (lockFile == null)
|
||||
{
|
||||
throw new ArgumentException($"Could not load a LockFile at '{AssetsFilePath}'.", nameof(AssetsFilePath));
|
||||
}
|
||||
|
||||
var manager = new RuntimeGraphManager();
|
||||
var graph = manager.Collect(lockFile);
|
||||
var expandedGraph = manager.Expand(graph, Runtime);
|
||||
|
||||
var trimmedRuntimeLibraries = context.RuntimeLibraries;
|
||||
|
||||
if (PackagesToRemove != null && PackagesToRemove.Any())
|
||||
{
|
||||
trimmedRuntimeLibraries = RuntimeReference.RemoveReferences(context.RuntimeLibraries, PackagesToRemove);
|
||||
}
|
||||
|
||||
context = new DependencyContext(
|
||||
context.Target,
|
||||
context.CompilationOptions,
|
||||
context.CompileLibraries,
|
||||
trimmedRuntimeLibraries,
|
||||
expandedGraph
|
||||
);
|
||||
|
||||
using (var depsStream = File.Create(DepsFilePath))
|
||||
{
|
||||
new DependencyContextWriter().Write(context, depsStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,144 @@
|
|||
// 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 System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.WindowsAzure.Storage;
|
||||
using Microsoft.WindowsAzure.Storage.Blob;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
/// <summary>
|
||||
/// Publish files to an Azure storage blob
|
||||
/// </summary>
|
||||
public class PublishToAzureBlob : Microsoft.Build.Utilities.Task, ICancelableTask
|
||||
{
|
||||
private CancellationTokenSource _cts = new CancellationTokenSource();
|
||||
|
||||
/// <summary>
|
||||
/// The files to publish.
|
||||
/// </summary>
|
||||
[Required]
|
||||
public ITaskItem[] Files { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The Azure blob storage account name.
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string AccountName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The SAS token used to write to Azure.
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string SharedAccessToken { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The Azure blob storage container name
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string ContainerName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The maximum number of parallel pushes.
|
||||
/// </summary>
|
||||
public int MaxParallelism { get; set; } = 8;
|
||||
|
||||
public void Cancel() => _cts.Cancel();
|
||||
|
||||
public override bool Execute()
|
||||
=> ExecuteAsync().Result;
|
||||
|
||||
private async Task<bool> ExecuteAsync()
|
||||
{
|
||||
var connectionString = $"BlobEndpoint=https://{AccountName}.blob.core.windows.net;SharedAccessSignature={SharedAccessToken}";
|
||||
|
||||
var account = CloudStorageAccount.Parse(connectionString);
|
||||
var client = account.CreateCloudBlobClient();
|
||||
var container = client.GetContainerReference(ContainerName);
|
||||
|
||||
var ctx = new OperationContext();
|
||||
var tasks = new List<Task>();
|
||||
|
||||
using (var throttler = new SemaphoreSlim(MaxParallelism))
|
||||
{
|
||||
foreach (var item in Files)
|
||||
{
|
||||
_cts.Token.ThrowIfCancellationRequested();
|
||||
await throttler.WaitAsync( _cts.Token);
|
||||
tasks.Add(
|
||||
Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await PushFileAsync(ctx, container, item, _cts.Token);
|
||||
}
|
||||
finally
|
||||
{
|
||||
throttler.Release();
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
await Task.WhenAll(tasks);
|
||||
}
|
||||
|
||||
return !Log.HasLoggedErrors;
|
||||
}
|
||||
|
||||
private async Task PushFileAsync(OperationContext ctx, CloudBlobContainer container, ITaskItem item, CancellationToken cancellationToken)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
|
||||
// normalize slashes
|
||||
var dest = item.GetMetadata("RelativeBlobPath")
|
||||
.Replace('\\', '/')
|
||||
.Replace("//", "/");
|
||||
var contentType = item.GetMetadata("ContentType");
|
||||
var cacheControl = item.GetMetadata("CacheControl");
|
||||
|
||||
if (string.IsNullOrEmpty(dest))
|
||||
{
|
||||
Log.LogError($"Item {item.ItemSpec} is missing required metadata 'RelativeBlobPath'");
|
||||
return;
|
||||
}
|
||||
|
||||
var blob = container.GetBlockBlobReference(dest);
|
||||
|
||||
if (!string.IsNullOrEmpty(cacheControl))
|
||||
{
|
||||
blob.Properties.CacheControl = cacheControl;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(contentType))
|
||||
{
|
||||
blob.Properties.ContentType = contentType;
|
||||
}
|
||||
|
||||
Log.LogMessage(MessageImportance.High, $"Beginning push of {item.ItemSpec} to https://{AccountName}.blob.core.windows.net/{ContainerName}/{dest}");
|
||||
|
||||
var accessCondition = bool.TryParse(item.GetMetadata("Overwrite"), out var overwrite) && overwrite
|
||||
? AccessCondition.GenerateEmptyCondition()
|
||||
: AccessCondition.GenerateIfNotExistsCondition();
|
||||
|
||||
try
|
||||
{
|
||||
await blob.UploadFromFileAsync(item.ItemSpec, accessCondition, new BlobRequestOptions(), ctx, cancellationToken);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.LogError($"Error publishing {item.ItemSpec}: {ex}");
|
||||
return;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Log.LogMessage(MessageImportance.High, $"Done publishing {item.ItemSpec} to https://{AccountName}.blob.core.windows.net/{ContainerName}/{dest}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Import Project="$(RepoTasksSdkPath)\Sdk.props" Condition="'$(RepoTasksSdkPath)' != '' "/>
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.DotNet.Archive" Version="$(MicrosoftDotNetArchivePackageVersion)" />
|
||||
<PackageReference Include="NuGet.Build.Tasks" Version="$(NuGetInMSBuildVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="$(DevDependency_MicrosoftExtensionsDependencyModelPackageVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="WindowsAzure.Storage" Version="$(DevDependency_WindowsAzureStoragePackageVersion)" />
|
||||
<PackageReference Include="Microsoft.DotNet.Build.Tasks.Feed" Version="$(DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion)" ExcludeAssets="Build" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$(RepoTasksSdkPath)\Sdk.targets" Condition="'$(RepoTasksSdkPath)' != '' "/>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<_RepoTaskAssembly>$(MSBuildThisFileDirectory)bin\publish\RepoTasks.dll</_RepoTaskAssembly>
|
||||
</PropertyGroup>
|
||||
|
||||
<UsingTask TaskName="RepoTasks.AddMetapackageReferences" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.CheckExpectedPackagesExist" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.CheckVersionOverrides" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.CreateLzma" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.GenerateRestoreSourcesPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.GetDocXmlFiles" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.JoinItems" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.OrderBy" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.ProcessSharedFrameworkDeps" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.PublishToAzureBlob" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.ResolveSymbolsRecursivePath" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.TrimDeps" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
|
||||
<!-- tools from dotnet-buildtools -->
|
||||
<PropertyGroup>
|
||||
<NuGetPackagesPath>$(NUGET_PACKAGES)</NuGetPackagesPath>
|
||||
<NuGetPackagesPath Condition=" '$(NuGetPackagesPath)' == '' AND '$(USERPROFILE)' != '' ">$(USERPROFILE)\.nuget\packages\</NuGetPackagesPath>
|
||||
<NuGetPackagesPath Condition=" '$(NuGetPackagesPath)' == '' AND '$(HOME)' != '' ">$(HOME)\.nuget\packages\</NuGetPackagesPath>
|
||||
<NuGetPackagesPath>$([MSBuild]::NormalizeDirectory($(NuGetPackagesPath)))</NuGetPackagesPath>
|
||||
<_MicrosoftDotNetBuildTasksFeedTaskDir>$(NuGetPackagesPath)microsoft.dotnet.build.tasks.feed\$(DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion.ToLowerInvariant())\build\netstandard1.5\</_MicrosoftDotNetBuildTasksFeedTaskDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<UsingTask TaskName="PushToBlobFeed" AssemblyFile="$(_MicrosoftDotNetBuildTasksFeedTaskDir)Microsoft.DotNet.Build.Tasks.Feed.dll"/>
|
||||
</Project>
|
||||
|
|
@ -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.IO;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
using RepoTasks.Utilities;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class ResolveSymbolsRecursivePath : Task
|
||||
{
|
||||
[Required]
|
||||
[Output]
|
||||
public ITaskItem[] Symbols { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
foreach (var symbol in Symbols)
|
||||
{
|
||||
var fullPath = symbol.GetMetadata("PortablePDB");
|
||||
symbol.SetMetadata("SymbolsRecursivePath", fullPath.Substring(fullPath.IndexOf($"{Path.DirectorySeparatorChar}lib{Path.DirectorySeparatorChar}")));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,66 @@
|
|||
// 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.
|
||||
// Sourced from https://github.com/dotnet/core-setup/tree/be8d8e3486b2bf598ed69d39b1629a24caaba45e/tools-local/tasks, needs to be kept in sync
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.DependencyModel;
|
||||
using NuGet.Frameworks;
|
||||
using NuGet.Packaging;
|
||||
using NuGet.ProjectModel;
|
||||
using NuGet.RuntimeModel;
|
||||
|
||||
namespace RepoTasks.Utilities
|
||||
{
|
||||
internal class RuntimeGraphManager
|
||||
{
|
||||
private const string RuntimeJsonFileName = "runtime.json";
|
||||
|
||||
public RuntimeGraph Collect(LockFile lockFile)
|
||||
{
|
||||
string userPackageFolder = lockFile.PackageFolders.FirstOrDefault()?.Path;
|
||||
var fallBackFolders = lockFile.PackageFolders.Skip(1).Select(f => f.Path);
|
||||
var packageResolver = new FallbackPackagePathResolver(userPackageFolder, fallBackFolders);
|
||||
|
||||
var graph = RuntimeGraph.Empty;
|
||||
foreach (var library in lockFile.Libraries)
|
||||
{
|
||||
if (string.Equals(library.Type, "package", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
var runtimeJson = library.Files.FirstOrDefault(f => f == RuntimeJsonFileName);
|
||||
if (runtimeJson != null)
|
||||
{
|
||||
var libraryPath = packageResolver.GetPackageDirectory(library.Name, library.Version);
|
||||
var runtimeJsonFullName = Path.Combine(libraryPath, runtimeJson);
|
||||
graph = RuntimeGraph.Merge(graph, JsonRuntimeFormat.ReadRuntimeGraph(runtimeJsonFullName));
|
||||
}
|
||||
}
|
||||
}
|
||||
return graph;
|
||||
}
|
||||
|
||||
public IEnumerable<RuntimeFallbacks> Expand(RuntimeGraph runtimeGraph, string runtime)
|
||||
{
|
||||
var importers = FindImporters(runtimeGraph, runtime);
|
||||
foreach (var importer in importers)
|
||||
{
|
||||
// ExpandRuntime return runtime itself as first item so we are skiping it
|
||||
yield return new RuntimeFallbacks(importer, runtimeGraph.ExpandRuntime(importer).Skip(1));
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<string> FindImporters(RuntimeGraph runtimeGraph, string runtime)
|
||||
{
|
||||
foreach (var runtimePair in runtimeGraph.Runtimes)
|
||||
{
|
||||
var expanded = runtimeGraph.ExpandRuntime(runtimePair.Key);
|
||||
if (expanded.Contains(runtime))
|
||||
{
|
||||
yield return runtimePair.Key;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
// 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.
|
||||
// Sourced from https://github.com/dotnet/core-setup/tree/be8d8e3486b2bf598ed69d39b1629a24caaba45e/tools-local/tasks, needs to be kept in sync
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.DependencyModel;
|
||||
|
||||
namespace RepoTasks.Utilities
|
||||
{
|
||||
internal class RuntimeReference
|
||||
{
|
||||
public static List<RuntimeLibrary> RemoveReferences(IReadOnlyList<RuntimeLibrary> runtimeLibraries, IEnumerable<string> packages)
|
||||
{
|
||||
List<RuntimeLibrary> result = new List<RuntimeLibrary>();
|
||||
|
||||
foreach (var runtimeLib in runtimeLibraries)
|
||||
{
|
||||
if (string.IsNullOrEmpty(packages.FirstOrDefault(elem => runtimeLib.Name.Equals(elem, StringComparison.OrdinalIgnoreCase))))
|
||||
{
|
||||
List<Dependency> toRemoveDependecy = new List<Dependency>();
|
||||
foreach (var dependency in runtimeLib.Dependencies)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(packages.FirstOrDefault(elem => dependency.Name.Equals(elem, StringComparison.OrdinalIgnoreCase))))
|
||||
{
|
||||
toRemoveDependecy.Add(dependency);
|
||||
}
|
||||
}
|
||||
|
||||
if (toRemoveDependecy.Count > 0)
|
||||
{
|
||||
List<Dependency> modifiedDependencies = new List<Dependency>();
|
||||
foreach (var dependency in runtimeLib.Dependencies)
|
||||
{
|
||||
if (!toRemoveDependecy.Contains(dependency))
|
||||
{
|
||||
modifiedDependencies.Add(dependency);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
result.Add(new RuntimeLibrary(runtimeLib.Type,
|
||||
runtimeLib.Name,
|
||||
runtimeLib.Version,
|
||||
runtimeLib.Hash,
|
||||
runtimeLib.RuntimeAssemblyGroups,
|
||||
runtimeLib.NativeLibraryGroups,
|
||||
runtimeLib.ResourceAssemblies,
|
||||
modifiedDependencies,
|
||||
runtimeLib.Serviceable));
|
||||
|
||||
}
|
||||
else if (string.IsNullOrEmpty(packages.FirstOrDefault(elem => runtimeLib.Name.Equals(elem, StringComparison.OrdinalIgnoreCase))))
|
||||
{
|
||||
result.Add(runtimeLib);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.26124.0
|
||||
MinimumVisualStudioVersion = 15.0.26124.0
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RepoTasks", "RepoTasks.csproj", "{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|x64.Build.0 = Release|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
#
|
||||
# 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-e1b4a89-20175311035359
|
||||
|
||||
# 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,2 @@
|
|||
* ${DATE} ${MAINTAINER_NAME} <${MAINTAINER_EMAIL}> - ${PACKAGE_VERSION}-${PACKAGE_REVISION}
|
||||
-
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"maintainer_name": "${MAINTAINER_NAME}",
|
||||
"maintainer_email": "${MAINTAINER_EMAIL}",
|
||||
|
||||
"package_name": "${PACKAGE_NAME}",
|
||||
"install_root": "${INSTALL_ROOT}",
|
||||
|
||||
"short_description": "${SHORT_DESCRIPTION}",
|
||||
"long_description": "${LONG_DESCRIPTION}",
|
||||
"homepage": "${HOMEPAGE}",
|
||||
|
||||
"release":{
|
||||
"package_version":"0.0.0.0",
|
||||
"package_revision":"${PACKAGE_REVISION}",
|
||||
"urgency" : "low",
|
||||
"changelog_message" : ""
|
||||
},
|
||||
|
||||
"control": {
|
||||
"priority":"standard",
|
||||
"section":"devel",
|
||||
"architecture":"any"
|
||||
},
|
||||
|
||||
"copyright": "Microsoft",
|
||||
"license": {
|
||||
"type": "${LICENSE_TYPE}",
|
||||
"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": {
|
||||
${DEBIAN_DEPENDENCIES}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" >
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.0</TargetFramework>
|
||||
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
|
||||
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="$(SharedFxPackage)" Version="$(SharedFxPackageVersion)" ExcludeAssets="Build" />
|
||||
<PackageReference Include="$(SharedFxDep)" Version="$(SharedFxDepVersion)" Condition="'$(SharedFxDep)' != ''"/>
|
||||
<PackageReference Include="Microsoft.NETCore.App" Version="$(RuntimeFrameworkVersion)" ExcludeAssets="Native"/>
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="GetPackageDefinitions" Returns="@(_PackageDefinitions)">
|
||||
<ResolvePackageDependencies ProjectPath="$(MSBuildThisFileFullPath)" ProjectAssetsFile="$(ProjectAssetsFile)">
|
||||
<Output TaskParameter="PackageDefinitions" ItemName="_PackageDefinitions" />
|
||||
</ResolvePackageDependencies>
|
||||
</Target>
|
||||
|
||||
<Target Name="GetPublishAssemblies" Returns="@(_PublishAssemblies)">
|
||||
<ResolvePublishAssemblies
|
||||
ProjectPath="$(MSBuildProjectFullPath)"
|
||||
AssetsFilePath="$(ProjectAssetsFile)"
|
||||
TargetFramework="$(TargetFramework)"
|
||||
RuntimeIdentifier="$(RuntimeIdentifier)"
|
||||
PlatformLibraryName="Microsoft.NETCore.App"
|
||||
ExcludeFromPublishPackageReferences="@(_ExcludeFromPublishPackageReference)"
|
||||
IsSelfContained="$(SelfContained)">
|
||||
<Output
|
||||
TaskParameter="AssembliesToPublish"
|
||||
ItemName="_PublishAssemblies" />
|
||||
</ResolvePublishAssemblies>
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>$ID$</id>
|
||||
<version>$VERSION$</version>
|
||||
<description>$DESCRIPTION$</description>
|
||||
<authors>Microsoft</authors>
|
||||
<owners>Microsoft</owners>
|
||||
<copyright>Copyright © Microsoft Corporation</copyright>
|
||||
<licenseUrl>https://raw.githubusercontent.com/aspnet/Home/2.0.0/LICENSE.txt</licenseUrl>
|
||||
<iconUrl>https://go.microsoft.com/fwlink/?LinkID=288859</iconUrl>
|
||||
<projectUrl>https://asp.net</projectUrl>
|
||||
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
||||
<serviceable Condition="'$(Configuration)' == 'Release'">true</serviceable>
|
||||
<tags>aspnetcore</tags>
|
||||
</metadata>
|
||||
<files />
|
||||
</package>
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
#
|
||||
# variables
|
||||
#
|
||||
|
||||
RESET="\033[0m"
|
||||
RED="\033[0;31m"
|
||||
YELLOW="\033[0;33m"
|
||||
MAGENTA="\033[0;95m"
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
build_args=()
|
||||
docker_args=()
|
||||
|
||||
#
|
||||
# Functions
|
||||
#
|
||||
__usage() {
|
||||
echo "Usage: $(basename "${BASH_SOURCE[0]}") <image> [options] [[--] <Arguments>...]"
|
||||
echo ""
|
||||
echo "Arguments:"
|
||||
echo " image The docker image to use."
|
||||
echo " <Arguments>... Arguments passed to the command. Variable number of arguments allowed."
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -v, --volume <VOLUME> An additional volume mount to add to the build container"
|
||||
echo ""
|
||||
echo "Description:"
|
||||
echo " This will run build.sh inside the dockerfile as defined in build/docker/\$image.Dockerfile."
|
||||
|
||||
if [[ "${1:-}" != '--no-exit' ]]; then
|
||||
exit 2
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
__error() {
|
||||
echo -e "${RED}error: $*${RESET}" 1>&2
|
||||
}
|
||||
|
||||
__warn() {
|
||||
echo -e "${YELLOW}warning: $*${RESET}"
|
||||
}
|
||||
|
||||
__machine_has() {
|
||||
hash "$1" > /dev/null 2>&1
|
||||
return $?
|
||||
}
|
||||
|
||||
#
|
||||
# main
|
||||
#
|
||||
|
||||
image="${1:-}"
|
||||
shift || True
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-\?|-h|--help)
|
||||
__usage --no-exit
|
||||
exit 0
|
||||
;;
|
||||
-v|--volume)
|
||||
shift
|
||||
volume_spec="${1:-}"
|
||||
[ -z "$volume_spec" ] && __error "Missing value for parameter --volume" && __usage
|
||||
docker_args[${#docker_args[*]}]="--volume"
|
||||
docker_args[${#docker_args[*]}]="$volume_spec"
|
||||
;;
|
||||
*)
|
||||
build_args[${#build_args[*]}]="$1"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "$image" ]; then
|
||||
__usage --no-exit
|
||||
__error 'Missing required argument: image'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! __machine_has docker; then
|
||||
__error 'Missing required command: docker'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dockerfile="$DIR/build/docker/$image.Dockerfile"
|
||||
tagname="universe-build-$image"
|
||||
|
||||
docker build "$(dirname "$dockerfile")" \
|
||||
--build-arg "USER=$(whoami)" \
|
||||
--build-arg "USER_ID=$(id -u)" \
|
||||
--build-arg "GROUP_ID=$(id -g)" \
|
||||
--tag $tagname \
|
||||
-f "$dockerfile"
|
||||
|
||||
docker run \
|
||||
--rm \
|
||||
-t \
|
||||
-e CI \
|
||||
-e TEAMCITY_VERSION \
|
||||
-e DOTNET_CLI_TELEMETRY_OPTOUT \
|
||||
-e Configuration \
|
||||
-v "$DIR:/code/build" \
|
||||
${docker_args[@]+"${docker_args[@]}"} \
|
||||
$tagname \
|
||||
./build.sh \
|
||||
${build_args[@]+"${build_args[@]}"} \
|
||||
"-p:HostMachineRepositoryRoot=$DIR"
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
## A pattern for making cross-repo breaking changes
|
||||
|
||||
The engineering team has come up with a pattern for making cross-repo breaking changes without destabilizing local \ CI builds using feature branches. I’ll explain it in terms of a breaking change in Configuration that affects Options:
|
||||
|
||||
1) Start by making a feature branch in the Configuration repo. A feature branch is any branch that starts with the prefix "feature/" e.g. feature/bring-back-web-config
|
||||
|
||||
`git checkout feature/bring-back-web-config`
|
||||
|
||||
2) Make your changes in this feature branch and push it to GitHub. You can ordinarily continue using this branch to get your PR reviewed.
|
||||
3) TeamCity's individual Project configuration (http://aspnetci/project.html?projectId=Lite&tab=projectOverview) has always built feature branches. We've enabled an additional step to it that pushes packages produced from feature branches to https://dotnet.myget.org/f/aspnetcore-dev.
|
||||
Packages produced from feature branches will have a branch name suffix in their release label to distinguish them from our regular builds. For instance, a package produced for the branch pushed earlier might look like '2.1.0-preview2-bring-back-web-config-10012'.
|
||||
|
||||
4) In the Options repo, create a working branch like you normally do:
|
||||
|
||||
`git checkout prkrishn/react-to-config`
|
||||
|
||||
5) Once again in the options repo, edit build/dependencies.props to reference the feature branch package that got produced.
|
||||
a) If `build/dependencies.props` already has a reference to Configuration, update the version of the Options package in `build/dependencies.props` to point to the package produced from the feature branch.
|
||||
b) If `build/dependencies.props` does not have a reference to the package version of Configuration, i.e. the package is transitively referenced:
|
||||
* Add a new entry in `build/dependencies.props`
|
||||
* And a PackageReference to the feature branch package in your project.
|
||||
|
||||
```xml
|
||||
// build/dependencies.props
|
||||
<MicrosoftAspNetCoreConfigurationAbstractionsPackageVersion>2.1.0-preview2-bring-back-web-config-10012</MicrosoftAspNetCoreConfigurationAbstractionsPackageVersion>
|
||||
```
|
||||
|
||||
5) Now that you reference the package with breaking changes, make your fixup changes to Options.
|
||||
6) Get your code reviewed
|
||||
7) Check in to dev both sets of changes i.e. the feature branch from Configuration and your reaction changes in Options including changes to build/dependencies.props.
|
||||
7) File a tracking task in Options to clean up build/dependencies.props. Build automation should fix up this version for you when it does it weekly update of dependencies.props, but it's good to manually verify that this is fixed up before we branch or create tags.
|
||||
|
||||
**tl,dr**: Push feature branches. TeamCity will build packages with release labels derived from branch name. You can edit and check in changes to build/dependencies.props to reference these packages.
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
Package Archives
|
||||
================
|
||||
|
||||
This repo builds multiple package archives which contain a NuGet fallback folder (also known as the fallback or offline package cache). The fallback folder is a set of NuGet packages that is bundled in the .NET Core SDK installers and available in Azure Web App service.
|
||||
|
||||
Package archives are available in four varieties.
|
||||
|
||||
* **LZMA** - `nuGetPackagesArchive-$(Version).lzma` - The LZMA is a compressed file format, similar to a .zip. On first use or on install, the .NET Core CLI will expand this LZMA file, extracting the packages inside to %DOTNET_INSTALL_DIR%/sdk/NuGetFallbackFolder. This contains all NuGet packages and their complete contents.
|
||||
* **ci-server** - `nuGetPackagesArchive-ci-server-$(Version).zip` - this archive is optimized for CI server environments. It contains the same contents as the LZMA, but trimmed of xml docs (these are only required for IDEs) and .nupkg files (not required for NuGet as for the 2.0 SDK).
|
||||
* **ci-server-patch** - `nuGetPackagesArchive-ci-server-$(Version).patch.zip` - this archive is the same as the ci-server archive, but each release is incremental - i.e. it does not bundle files that were present in a previous ci-server archive release. This can be used by first starting with a baseline `nuGetPackagesArchive-ci-server-$(Version).zip` and then applying the `.patch.zip` version for subsequent updates.
|
||||
* **ci-server-compat-patch** - `nuGetPackagesArchive-ci-server-compat-$(Version).patch.zip` - similar to the ci-server-patch archive, but this includes .nupkg files to satisfy CI environments that may have older NuGet clients.
|
||||
|
||||
These archives are built using the projects in [src/PackageArchive/Archive.\*/](/src/PackageArchive/).
|
||||
|
||||
## Using a fallback folder
|
||||
|
||||
NuGet restore takes a list of fallback folders in the MSBuild property `RestoreAdditionalProjectFallbackFolders`. Unlike a folder restore source, restore will not copy the packages from a fallback folder into the global NuGet cache.
|
||||
|
||||
By default, the .NET Core SDK adds `$(DotNetInstallRoot)/sdk/NuGetFallbackFolder/` to this list. The .NET Core CLI expands its bundled `nuGetPackagesArchive.lzma` file into this location on first use or when the installers run. (See [Microsoft.NET.NuGetOfflineCache.targets](https://github.com/dotnet/sdk/blob/v2.1.300/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.NuGetOfflineCache.targets)).
|
||||
|
||||
## Scenarios
|
||||
|
||||
The following scenarios are used to determine which packages go into the fallback package cache.
|
||||
These requirements are formalized as project files in [src/PackageArchive/Scenario.\*/](/src/PackageArchive/).
|
||||
|
||||
- A user should be able to restore the following templates and only use packages from the offline cache:
|
||||
- `dotnet new console`
|
||||
- `dotnet new library`
|
||||
- `dotnet new web`
|
||||
- `dotnet new razor`
|
||||
- `dotnet new mvc`
|
||||
|
||||
The following packages are NOT included in the offline cache.
|
||||
- Packages required for standalone publishing, aka projects that set a Runtime Identifier during restore
|
||||
- Packages required for F# and VB templates
|
||||
- Packages required for Visual Studio code generation in ASP.NET Core projects
|
||||
- Packages required to restore .NET Framework projects
|
||||
- Packages required to restore test projects, such as xunit, MSTest, NUnit
|
||||
|
||||
The result of this typically means including the transitive graph of the following packages:
|
||||
|
||||
- Packages that match bundled runtimes
|
||||
- Microsoft.NETCore.App
|
||||
- Microsoft.AspNetCore.App
|
||||
- Microsoft.AspNetCore.All
|
||||
- Packages that Microsoft.NET.Sdk adds implicitly
|
||||
- Microsoft.NETCore.App
|
||||
- NETStandard.Library
|
||||
- Packages that are a PackageReference/DotNetCliToolReference in basic ASP.NET Core templates. In addition to packages above, this typically includes:
|
||||
- Microsoft.EntityFrameworkCore.Tools{.DotNet}
|
||||
- Microsoft.VisualStudio.Web.CodeGeneration.Design
|
||||
- Microsoft.VisualStudio.Web.BrowserLink
|
||||
|
||||
### Example
|
||||
|
||||
Given the following parameters:
|
||||
- LatestNETCoreAppTFM = netcoreapp2.1
|
||||
- DefaultRuntimeVersion = 2.1
|
||||
- BundledRuntimeVersion = 2.1.8
|
||||
- BundledAspNetRuntimeVersion = 2.1.7
|
||||
- LatestNETStandardLibraryTFM = netstandard2.0
|
||||
- BundledNETStandardLibraryVersion = 2.0.1
|
||||
|
||||
The LZMA should contain
|
||||
- Microsoft.NETCore.App/2.1.0 + netcoreapp2.1 dependencies (Microsoft.NET.Sdk will implicitly reference "2.1", which NuGet to 2.1.0)
|
||||
- Microsoft.NETCore.App/2.1.8 + netcoreapp2.1 dependencies (Matches the runtime in shared/Microsoft.NETCore.App/2.1.8/)
|
||||
- Microsoft.AspNetCore.All/2.1.7 + netcoreapp2.1 dependencies (Matches the runtime in shared/Microsoft.AspNetCore.All/2.1.7/)
|
||||
- NETStandard.Library/2.0.1 + netstandard2.0 dependencies (Microsoft.NET.Sdk will implicitly reference "2.0.1")
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
Submodules
|
||||
==========
|
||||
|
||||
This repository composes ASP.NET Core repos from a collection of many submodules.
|
||||
Working with submodules in git requires using commands not used in a normal git workflow.
|
||||
Here are some tips for working with submodules.
|
||||
|
||||
For full information, see the [official docs for git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules).
|
||||
|
||||
## Fundamental concept
|
||||
|
||||
The parent repo (aspnet/Universe) stores two pieces of info about each submodule.
|
||||
|
||||
1. Where to clone the submodule from. This is stored in the .gitmodules file
|
||||
2. The commit hash of the submodule to use.
|
||||
|
||||
This means you cannot commit a submodule's branch or a tag to the parent repo.
|
||||
Other info may appear in the .gitmodules file, but it is only used when attempting to
|
||||
[update a submodule.](#updating-submodules)
|
||||
|
||||
## Cloning
|
||||
|
||||
By default, submodules will not be present. Use `--recursive` to clone all submodules.
|
||||
|
||||
git clone https://github.com/aspnet/Universe.git --recursive
|
||||
|
||||
If you have already cloned, run this to initialize all submodules.
|
||||
|
||||
git submodule update --init
|
||||
|
||||
## Pulling updates
|
||||
|
||||
When you execute `git pull`, submodules do not automatically snap to the version
|
||||
used in new commits of the parent repo. Update all submodules to match the parent repo's
|
||||
expected version by running this command.
|
||||
|
||||
git submodule update
|
||||
|
||||
## Executing a command on each submodule
|
||||
|
||||
git submodule foreach '<command>'
|
||||
|
||||
For example, to clean and reset each submodule:
|
||||
|
||||
git submodule foreach 'git reset --hard; git clean -xfd'
|
||||
|
||||
## Updating submodules
|
||||
|
||||
Updating all submodules to newer versions can be done like this.
|
||||
|
||||
git submodule update --remote
|
||||
|
||||
Updating just one subumodule.
|
||||
|
||||
git submodule update --remote modules/EntityFrameworkCore/
|
||||
|
||||
This uses the remote url and branch info configuration stored in .gitmodules to pull new commits.
|
||||
This does not guarantee the commit is going to be a fast-forward commit.
|
||||
|
||||
## Diff
|
||||
|
||||
You can see which commits have changed in submodules from the last parent repo commit by adding `--submodule` to git-diff.
|
||||
|
||||
git diff --submodule
|
||||
|
||||
## Saving an update to a submodule
|
||||
|
||||
To move the parent repo to use a new commit, you must create a commit in the parent repo
|
||||
that contains the new commit.
|
||||
|
||||
git submodule update --remote modules/KestrelHttpServer/
|
||||
git add modules/KestrelhttpServer/
|
||||
git commit -m "Update Kestrel to latest version"
|
||||
|
||||
## PowerShell is slow in aspnet/Universe
|
||||
|
||||
Many users have post-git, and extension that shows git status on the prompt line. Because `git status` with submodules
|
||||
on Windows is very slow, it can make PowerShell unbearable to use.
|
||||
|
||||
To workaround this, disable checking git-status for each prompt.
|
||||
```ps1
|
||||
$GitPromptSettings.EnableFileStatus = $false
|
||||
```
|
||||
You can disable this permanently by adding to your `$PROFILE` file. (`notepad $PROFILE`)
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
Build ASP.NET Core from Source
|
||||
==============================
|
||||
|
||||
Building ASP.NET Core from source allows you tweak and customize ASP.NET Core, and
|
||||
to contribute your improvements back to the project.
|
||||
|
||||
## Install pre-requistes
|
||||
|
||||
### Windows
|
||||
|
||||
Building ASP.NET Core on Windows requires:
|
||||
|
||||
* Windows 7 or higher
|
||||
* At least 10 GB of disk space and a good internet connection (our build scripts download a lot of tools and dependencies)
|
||||
* Visual Studio 2017. <https://visualstudio.com>
|
||||
* Git. <https://git-scm.org>
|
||||
* (Optional) some optional components, like the SignalR Java client, may require
|
||||
* NodeJS <https://nodejs.org>
|
||||
* Java Development Kit 10 or newer. Either:
|
||||
* OpenJDK <http://jdk.java.net/10/>
|
||||
* Oracle's JDK <https://www.oracle.com/technetwork/java/javase/downloads/index.html>
|
||||
|
||||
### macOS/Linux
|
||||
|
||||
Building ASP.NET Core on macOS or Linux requires:
|
||||
|
||||
* If using macOS, you need macOS Sierra or newer.
|
||||
* If using Linux, you need a machine with all .NET Core Linux prerequisites: <https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites>
|
||||
* At least 10 GB of disk space and a good internet connection (our build scripts download a lot of tools and dependencies)
|
||||
* Git <https://git-scm.org>
|
||||
* (Optional) some optional components, like the SignalR Java client, may require
|
||||
* NodeJS <https://nodejs.org>
|
||||
* Java Development Kit 10 or newer. Either:
|
||||
* OpenJDK <http://jdk.java.net/10/>
|
||||
* Oracle's JDK <https://www.oracle.com/technetwork/java/javase/downloads/index.html>
|
||||
|
||||
## Clone the source code
|
||||
|
||||
ASP.NET Core uses git submodules to include source from a few other projects.
|
||||
|
||||
For a new copy of the project, run:
|
||||
```
|
||||
git clone --recursive https://github.com/aspnet/AspNetCore
|
||||
```
|
||||
|
||||
To update an existing copy, run:
|
||||
```
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
## Building in Visual Studio / Code
|
||||
|
||||
Before opening our .sln files in Visual Studio or VS Code, executing the following on command-line:
|
||||
```
|
||||
.\build.cmd /t:Restore
|
||||
```
|
||||
This will download required tools.
|
||||
|
||||
#### PATH
|
||||
|
||||
For VS Code and Visual Studio to work correctly, you must place the following location in your PATH.
|
||||
```
|
||||
Windows: %USERPROFILE%\.dotnet\x64
|
||||
Linux/macOS: $HOME/.dotnet
|
||||
```
|
||||
This must come **before** any other installation of `dotnet`. In Windows, we recommend removing `C:\Program Files\dotnet` from PATH in system variables and adding `%USERPROFILE%\.dotnet\x64` to PATH in user variables.
|
||||
|
||||
<img src="http://i.imgur.com/Tm2PAfy.png" width="400" />
|
||||
|
||||
## Building on command-line
|
||||
|
||||
You can also build the entire project on command line with the `build.cmd`/`.sh` scripts.
|
||||
|
||||
On Windows:
|
||||
```
|
||||
.\build.cmd
|
||||
```
|
||||
|
||||
On macOS/Linux:
|
||||
```
|
||||
./build.sh
|
||||
```
|
||||
|
||||
#### Build properties
|
||||
|
||||
Additional properties can be added as an argument in the form `/property:$name=$value`, or `/p:$name=$value` for short. For example:
|
||||
```
|
||||
.\build.cmd /p:Configuration=Release
|
||||
```
|
||||
|
||||
Common properties include:
|
||||
|
||||
Property | Description
|
||||
-------------------------|---------------------------------------------------------
|
||||
BuildNumber | (string). A specific build number, typically from a CI counter
|
||||
Configuration | `Debug` or `Release`. Default = `Debug`.
|
||||
SkipTests | `true` or `false`. When true, builds without running tests.
|
||||
NoBuild | `true` or `false`. Runs tests without rebuilding.
|
||||
|
||||
## Use the result of your build
|
||||
|
||||
After building ASP.NET Core from source, you will need to install and use your local version of ASP.NET Core.
|
||||
|
||||
- Run the installers produced in `artifacts/installers/` for your platform.
|
||||
- Add a NuGet.Config to your project directory with the following content:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="MyBuildOfAspNetCore" value="C:\src\aspnet\AspNetCore\artifacts\build\" />
|
||||
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
*NOTE: This NuGet.Config should be with your application unless you want nightly packages to potentially start being restored for other apps on the machine.*
|
||||
|
||||
- Update the versions on `PackageReference` items in your .csproj project file to point to the version from your local build.
|
||||
```xml
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="3.0.0-alpha1-t000" />
|
||||
</ItemGroup>
|
||||
```
|
||||
|
||||
|
||||
Some features, such as new target frameworks, may require prerelease tooling builds for Visual Studio.
|
||||
These are available in the [Visual Studio Preview](https://www.visualstudio.com/vs/preview/).
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
How to get daily builds of ASP.NET Core
|
||||
=======================================
|
||||
|
||||
Daily builds include the latest source code changes. They are not supported for production use and are subject to frequent changes, but we strive to make sure daily builds function correctly.
|
||||
|
||||
If you want to download the latest daily build and use it in a project, then you need to:
|
||||
|
||||
- Obtain the latest [build of the .NET Core SDK](https://github.com/dotnet/core-sdk#installers-and-binaries)
|
||||
- Add a NuGet.Config to your project directory with the following content:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
|
||||
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
*NOTE: This NuGet.Config should be with your application unless you want nightly packages to potentially start being restored for other apps on the machine.*
|
||||
|
||||
Some features, such as new target frameworks, may require prerelease tooling builds for Visual Studio.
|
||||
These are available in the [Visual Studio Preview](https://www.visualstudio.com/vs/preview/).
|
||||
|
||||
## NuGet packages
|
||||
|
||||
Daily builds of ackages can be found on <https://dotnet.myget.org/gallery/dotnet-core>. This feed may include
|
||||
packages that will not be supported in a officially released build.
|
||||
|
||||
Commonly referenced packages:
|
||||
|
||||
[app-metapackage-myget]: https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.AspNetCore.App
|
||||
[app-metapackage-myget-badge]: https://img.shields.io/dotnet.myget/dotnet-core/vpre/Microsoft.AspNetCore.App.svg?style=flat-square&label=myget
|
||||
|
||||
[metapackage-myget]: https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.AspNetCore
|
||||
[metapackage-myget-badge]: https://img.shields.io/dotnet.myget/dotnet-core/vpre/Microsoft.AspNetCore.svg?style=flat-square&label=myget
|
||||
|
||||
Package | MyGet
|
||||
:---------------------------------|:---------------------------------------------------------
|
||||
Microsoft.AspNetCore.App | [![][app-metapackage-myget-badge]][app-metapackage-myget]
|
||||
Microsoft.AspNetCore | [![][metapackage-myget-badge]][metapackage-myget]
|
||||
|
||||
## Runtime installers
|
||||
|
||||
Updated versions of the ASP.NET Core runtime can be installed separately from SDK updates. Runtime-only installers can be downloaded here:
|
||||
|
||||
[badge-master]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-win-x64-version-badge.svg
|
||||
[win-x64-zip]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-win-x64.zip
|
||||
[win-x64-exe]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-win-x64.exe
|
||||
[win-x86-zip]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-win-x86.zip
|
||||
[win-x86-exe]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-win-x86.exe
|
||||
[linux-x64-tar]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-linux-x64.tar.gz
|
||||
[linux-arm-tar]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-linux-arm.tar.gz
|
||||
[linux-arm64-tar]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-linux-arm64.tar.gz
|
||||
[osx-x64-tar]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-osx-x64.tar.gz
|
||||
[debian-x64-deb]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-x64.deb
|
||||
[redhat-x64-rpm]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-x64.rpm
|
||||
[linux-musl-x64-tar]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/master/aspnetcore-runtime-latest-linux-musl-x64.tar.gz
|
||||
|
||||
[badge-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-win-x64-version-badge.svg
|
||||
[win-x64-zip-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-win-x64.zip
|
||||
[win-x64-exe-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-win-x64.exe
|
||||
[win-x86-zip-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-win-x86.zip
|
||||
[win-x86-exe-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-win-x86.exe
|
||||
[linux-x64-tar-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-linux-x64.tar.gz
|
||||
[osx-x64-tar-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-osx-x64.tar.gz
|
||||
[debian-x64-deb-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-x64.deb
|
||||
[redhat-x64-rpm-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-x64.rpm
|
||||
[linux-arm-tar-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-linux-arm.tar.gz
|
||||
[linux-musl-x64-tar-rel-22]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.2/aspnetcore-runtime-latest-linux-musl-x64.tar.gz
|
||||
|
||||
[badge-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-win-x64-version-badge.svg
|
||||
[win-x64-zip-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-win-x64.zip
|
||||
[win-x64-exe-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-win-x64.exe
|
||||
[win-x86-zip-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-win-x86.zip
|
||||
[win-x86-exe-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-win-x86.exe
|
||||
[linux-x64-tar-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-linux-x64.tar.gz
|
||||
[osx-x64-tar-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-osx-x64.tar.gz
|
||||
[debian-x64-deb-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-x64.deb
|
||||
[redhat-x64-rpm-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-x64.rpm
|
||||
[linux-arm-tar-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-linux-arm.tar.gz
|
||||
[linux-musl-x64-tar-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/release/2.1/aspnetcore-runtime-latest-linux-musl-x64.tar.gz
|
||||
|
||||
Platform | Latest (master branch) <br> ![][badge-master] | release/2.2 <br> ![][badge-rel-22] | release/2.1 <br> ![][badge-rel-21]
|
||||
:---------------------|:----------------------------------------------------------------|:------------------------------------------------------------------------- |:-------------------------------------------------------------------------
|
||||
Channel name<sup>1</sup> | `master` | `release/2.2` | `release/2.1`
|
||||
Windows (x64) | [Installer (exe)][win-x64-exe]<br>[Archive (zip)][win-x64-zip] | [Installer (exe)][win-x64-exe-rel-22]<br>[Archive (zip)][win-x64-zip-rel-22] | [Installer (exe)][win-x64-exe-rel-21]<br>[Archive (zip)][win-x64-zip-rel-21]
|
||||
Windows (x86) | [Installer (exe)][win-x86-exe]<br>[Archive (zip)][win-x86-zip] | [Installer (exe)][win-x86-exe-rel-22]<br>[Archive (zip)][win-x86-zip-rel-22] | [Installer (exe)][win-x86-exe-rel-21]<br>[Archive (zip)][win-x86-zip-rel-21]
|
||||
macOS (x64) | [Archive (tar.gz)][osx-x64-tar] | [Archive (tar.gz)][osx-x64-tar-rel-22] | [Archive (tar.gz)][osx-x64-tar-rel-21]
|
||||
Linux (x64)<br>_(for glibc based OS - most common)_ | [Archive (tar.gz)][linux-x64-tar] | [Archive (tar.gz)][linux-x64-tar-rel-22] | [Archive (tar.gz)][linux-x64-tar-rel-21]
|
||||
Linux (x64 - musl)<br>_(for musl based OS, such as Alpine Linux)_ | [Archive (tar.gz)][linux-musl-x64-tar] | [Archive (tar.gz)][linux-musl-x64-tar-rel-22] | [Archive (tar.gz)][linux-musl-x64-tar-rel-21]
|
||||
Linux (arm32) | [Archive (tar.gz)][linux-arm-tar] | [Archive (tar.gz)][linux-arm-tar-rel-22] | [Archive (tar.gz)][linux-arm-tar-rel-21]
|
||||
Linux (arm64) | [Archive (tar.gz)][linux-arm64-tar] | |
|
||||
Debian/Ubuntu (x64) | [Installer (deb)][debian-x64-deb] | [Installer (deb)][debian-x64-deb-rel-22] | [Installer (deb)][debian-x64-deb-rel-21]
|
||||
RedHat/Fedora (x64) | [Installer (rpm)][redhat-x64-rpm] | [Installer (rpm)][redhat-x64-rpm-rel-22] | [Installer (rpm)][redhat-x64-rpm-rel-21]
|
||||
|
||||
> <sup>1</sup> For use with the `-Channel` argument in [dotnet-install.ps1/sh](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script).
|
||||
Binary file not shown.
|
|
@ -0,0 +1,11 @@
|
|||
<!-- Targets for making .vcxproj better. -->
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<SignOutput Condition=" '$(SignType)' != '' ">true</SignOutput>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="MicroBuild.Plugin.props" Condition="'$(MicroBuildSentinelFile)' == ''" />
|
||||
<Import Project="$(MicroBuildPluginDirectory)\MicroBuild.Plugins.*\**\build\MicroBuild.Plugins.*.props" Condition=" '$(MicroBuildPluginDirectory)' != ''" />
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<!-- Targets for making .vcxproj better. -->
|
||||
<Project>
|
||||
|
||||
<Import Project="$(MicroBuildPluginDirectory)\MicroBuild.Plugins.*\**\build\MicroBuild.Plugins.*.targets" Condition="'$(DisableMicroBuild)' != 'true' AND '$(MicroBuildPluginDirectory)' != ''" />
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<!-- Allow for the ability to override the plugin directory, for example in automated builds -->
|
||||
<MicroBuildPluginDirectory Condition="'$(MicroBuildPluginDirectory)' == ''">$(MicroBuildOverridePluginDirectory)</MicroBuildPluginDirectory>
|
||||
|
||||
<!-- Some people might want to put the plugin packages directly in their Nuget v3 global cache. This doesn't happen by default, but we will allow for it here. -->
|
||||
<MicroBuildPluginDirectory Condition="'$(MicroBuildPluginDirectory)' == '' and '$(NuGetPackageRoot)' != '' ">$(NuGetPackageRoot)</MicroBuildPluginDirectory>
|
||||
<MicroBuildPluginDirectory Condition="'$(MicroBuildPluginDirectory)' == '' and '$(NUGET_PACKAGES)' != '' ">$(NUGET_PACKAGES)</MicroBuildPluginDirectory>
|
||||
<MicroBuildPluginDirectory Condition="'$(MicroBuildPluginDirectory)' == '' and '$(USERPROFILE)' != '' ">$(USERPROFILE)\.nuget\packages</MicroBuildPluginDirectory>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<!-- Targets for making .wixproj better. -->
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProductVersion>3.11</ProductVersion>
|
||||
<WixVersion>3.11.1</WixVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<!-- Required to make NuGet happy -->
|
||||
<TargetFramework>net461</TargetFramework>
|
||||
<MSBuildProjectExtensionsPath>$(BaseIntermediateOutputPath)</MSBuildProjectExtensionsPath>
|
||||
<MSBuildProjectExtensionsPath Condition="'$(MSBuildProjectExtensionsPath)' == ''">$(MSBuildProjectDir)\obj\</MSBuildProjectExtensionsPath>
|
||||
<NuGetRestoreTargets Condition="'$(NuGetRestoreTargets)'==''">$(MSBuildExtensionsPath)\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets</NuGetRestoreTargets>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.props" />
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Wix" Version="$(WixVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<SignOutput Condition=" '$(SignType)' != '' ">true</SignOutput>
|
||||
<DarkToolPath>$(WixExtDir)dark.exe</DarkToolPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="MicroBuild.Plugin.props" Condition="'$(MicroBuildSentinelFile)' == ''" />
|
||||
<Import Project="$(MicroBuildPluginDirectory)\MicroBuild.Plugins.*\**\build\MicroBuild.Plugins.*.props" Condition=" '$(MicroBuildPluginDirectory)' != ''" />
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<!-- Targets for making .wixproj better. -->
|
||||
<Project>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<!-- Override the MicroBuild default certs which still uses MicrosoftSHA1 and Microsoft401 -->
|
||||
<SignCabs>
|
||||
<Authenticode>Microsoft400</Authenticode>
|
||||
</SignCabs>
|
||||
<SignMsi>
|
||||
<Authenticode>Microsoft400</Authenticode>
|
||||
</SignMsi>
|
||||
<SignBundle>
|
||||
<Authenticode>Microsoft400</Authenticode>
|
||||
</SignBundle>
|
||||
<SignBundleEngine>
|
||||
<Authenticode>Microsoft400</Authenticode>
|
||||
</SignBundleEngine>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="**\*.wxs" Exclude="obj\**\*;bin\**\*" />
|
||||
<EmbeddedResource Include="**\*.wxl" Exclude="obj\**\*;bin**\*;" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(OutputType)' == 'package'">
|
||||
<EmbedCab Condition="'$(EmbedCab)' == ''">yes</EmbedCab>
|
||||
<Cabinet Condition="'$(Cabinet)' == ''">$(OutputName.Replace('-', '_')).cab</Cabinet>
|
||||
<InstallDir>$(ProductName)</InstallDir>
|
||||
|
||||
<DefineConstants Condition="'$(Configuration)' == 'Debug'">$(DefineConstants);Debug</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);EmbedCab=$(EmbedCab)</DefineConstants>
|
||||
<DefineConstants>$(DefineConstants);Cabinet=$(Cabinet)</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<Culture Condition=" '$(Culture)' == '' ">en-US</Culture>
|
||||
<Cultures Condition=" '$(Cultures)' == '' ">$(Culture)</Cultures>
|
||||
<InstallerPlatform>$(Platform)</InstallerPlatform>
|
||||
<PlatformName Condition=" '$(PlatformName)' == '' ">$(Platform)</PlatformName>
|
||||
<OutDir Condition=" '$(OutDir)' == '' ">$(OutputPath)</OutDir>
|
||||
<DefineConstants>$(DefineConstants);BinPath=$(OutputPath)$(Culture)\</DefineConstants>
|
||||
<DefineConstants>$(WixVariables);$(DefineConstants)</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="$(NuGetRestoreTargets)" />
|
||||
<Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.targets" />
|
||||
<Import Project="$(WixTargetsPath)" Condition="'$(WixTargetsPath)' != '' " />
|
||||
<Import Project="$(MicroBuildPluginDirectory)\MicroBuild.Plugins.*\**\build\MicroBuild.Plugins.*.targets" Condition="'$(DisableMicroBuild)' != 'true' AND '$(MicroBuildPluginDirectory)' != ''" />
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"sdk": {
|
||||
"version": "2.2.100-preview2-009404"
|
||||
},
|
||||
"msbuild-sdks": {
|
||||
"Internal.AspNetCore.Sdk": "3.0.0-alpha1-20181011.11"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
version:3.0.0-alpha1-20181011.11
|
||||
commithash:f57aa8ddda0abdd74ada55853587bedb4f364065
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/master/tools/korebuild.schema.json",
|
||||
"channel": "master",
|
||||
"toolsets": {
|
||||
"nodejs": {
|
||||
"minVersion": "8.0",
|
||||
"required": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 1ebe668a965de3e4a759e5eadc57c4c742ae825c
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 926b3dfe97df76d9a0c35db197f130147e3675e8
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 7c3be6c7f8d6692d6c87ed7f1cea7eec2fc8bb7a
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 1e6e0660064a7e0438fea2d42af45ad5b92204bf
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 6339351ddc1a6815e2cb8fe32da6fa341e877173
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 0b083d15036e5643b2b6a9ea6e3d995c51a42e5a
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit f074714eb0a558d27c97f04c60de6b8730b4fd9c
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit b7cda012bca34704e5a835ace53a0f879b5f2a2d
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit b90ec23956e81c462ab61fd9ee56b975464b834c
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit fdeabf601682d6d85b1f37a79449972f8d469e8a
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit ca90dc687106ab6ecb46e4943f3fe5ceac3e6ef8
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 0ce437875e8feeb88bb935c7de07e96218be8be3
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 581b3160f422180b3411d84b4458c10128c8cacb
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 12855cd0ed48d77f13ae7f6e9ef67cbbcac71a22
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 08c615f0939fe0a7d7399eaa02be708dc92d9a10
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 3cc768b93fafb14aa74f93b050cfb4aba8ae6dfb
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 5a3c6645667ec24e09d6200fb1e949f2a2417b9a
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 45b7e2ddb796f0cb909d8f04bc4b5a5cf13b5e46
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 3fe17b9faf0ae413ecd5bea1d42c784854acfb57
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue