Merge branch 'rel/1.0.0' into test3formultipletfm
This commit is contained in:
commit
679ea57acf
28 changed files with 390 additions and 194 deletions
1
.cliversion
Normal file
1
.cliversion
Normal file
|
@ -0,0 +1 @@
|
||||||
|
latest
|
2
.toolversions
Normal file
2
.toolversions
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
microsoft.dotnet.buildtools=1.0.26-prerelease-00802-01
|
||||||
|
microsoft.dotnet.buildtools.run=1.0.0-prerelease-00807-04
|
|
@ -1 +0,0 @@
|
||||||
1.0.0-preview2-002733
|
|
|
@ -1 +0,0 @@
|
||||||
1.0.26-prerelease-00621-06
|
|
|
@ -13,16 +13,10 @@ possible and can triage effectively.
|
||||||
The below steps are something that we believe is not a huge increase in process,
|
The below steps are something that we believe is not a huge increase in process,
|
||||||
but would help us react much faster to any issues that are filed.
|
but would help us react much faster to any issues that are filed.
|
||||||
|
|
||||||
1. Check if the [known issues](known-issues.md) cover the issue you are running
|
1. Check if the [known issues](https://github.com/dotnet/core/blob/master/cli/known-issues.md) cover the issue you are running
|
||||||
into. We are collecting issues that are known and that have workarounds, so it
|
into. We are collecting issues that are known and that have workarounds, so it
|
||||||
could be that you can get unblocked pretty easily.
|
could be that you can get unblocked pretty easily.
|
||||||
|
|
||||||
2. Add a label to determine which type of issue it is. If it is a defect, use
|
|
||||||
the "bug" label, if it is a suggestion for a feature, use the "enhancement"
|
|
||||||
label. This helps the team get to defects more effectively.
|
|
||||||
|
|
||||||
3. Unless you are sure in which milestone the issue falls into, leave it blank.
|
|
||||||
|
|
||||||
4. /cc the person that the issue should be assigned to (or @blackdwarf) so that person
|
4. /cc the person that the issue should be assigned to (or @blackdwarf) so that person
|
||||||
would get notified. In this way the correct person can immediately jump on the
|
would get notified. In this way the correct person can immediately jump on the
|
||||||
issue and triage it.
|
issue and triage it.
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace ConsoleApplication
|
||||||
|
{
|
||||||
|
public class Program
|
||||||
|
{
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Hello World!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"version": "1.0.0-*",
|
||||||
|
"buildOptions": {
|
||||||
|
"emitEntryPoint": true
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.App": "1.0.1",
|
||||||
|
"TestLibraryAsAPackage": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"target": "package"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"netcoreapp1.0": {}
|
||||||
|
},
|
||||||
|
"runtimes": {
|
||||||
|
"win7-x64": {},
|
||||||
|
"win7-x86": {},
|
||||||
|
"osx.10.10-x64": {},
|
||||||
|
"osx.10.11-x64": {},
|
||||||
|
"ubuntu.14.04-x64": {},
|
||||||
|
"ubuntu.16.04-x64": {},
|
||||||
|
"centos.7-x64": {},
|
||||||
|
"rhel.7.2-x64": {},
|
||||||
|
"debian.8-x64": {},
|
||||||
|
"fedora.23-x64": {},
|
||||||
|
"opensuse.13.2-x64": {}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace TestLibrary
|
||||||
|
{
|
||||||
|
public static class Helper
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the message from the helper. This comment is here to help test XML documentation file generation, please do not remove it.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>A message</returns>
|
||||||
|
public static string GetMessage()
|
||||||
|
{
|
||||||
|
return "This string came from the test library!";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SayHi()
|
||||||
|
{
|
||||||
|
Console.WriteLine("Hello there!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"version": "1.0.0-*",
|
||||||
|
"buildOptions": {
|
||||||
|
"nowarn": [
|
||||||
|
"CS1591"
|
||||||
|
],
|
||||||
|
"xmlDoc": true,
|
||||||
|
"additionalArguments": [
|
||||||
|
"-highentropyva+"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"NETStandard.Library": "1.6.0"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"netstandard1.5": {}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"projects": [ "." ]
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFrameworks>net451;netcoreapp1.0</TargetFrameworks>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.NET.Sdk">
|
||||||
|
<Version>1.0.0-alpha-20161019-1</Version>
|
||||||
|
<PrivateAssets>All</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="dotnet-desktop-and-portable">
|
||||||
|
<Version>1.0.0-*</Version>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">
|
||||||
|
<PackageReference Include="Microsoft.NETCore.App">
|
||||||
|
<Version>1.0.1</Version>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<DotNetCliToolReference Include="dotnet-dependency-tool-invoker">
|
||||||
|
<Version>1.0.0-*</Version>
|
||||||
|
</DotNetCliToolReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="**\*.cs" />
|
||||||
|
<EmbeddedResource Include="**\*.resx" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
|
@ -0,0 +1,12 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace ConsoleApplication
|
||||||
|
{
|
||||||
|
public class Program
|
||||||
|
{
|
||||||
|
public static void Main()
|
||||||
|
{
|
||||||
|
Console.WriteLine("Hello World!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<SdkBrandName>Microsoft .NET Core 1.0.1 - SDK Preview 2</SdkBrandName>
|
<SdkBrandName>Microsoft .NET Core 1.0.1 - SDK Preview 3</SdkBrandName>
|
||||||
<SharedFrameworkBrandName>Microsoft .NET Core 1.0.1 - Runtime</SharedFrameworkBrandName>
|
<SharedFrameworkBrandName>Microsoft .NET Core 1.0.1 - Runtime</SharedFrameworkBrandName>
|
||||||
<SharedHostBrandName>Microsoft .NET Core 1.0.0 - Host</SharedHostBrandName>
|
<SharedHostBrandName>Microsoft .NET Core 1.0.0 - Host</SharedHostBrandName>
|
||||||
<HostFxrBrandName>Microsoft .NET Core 1.0.0 - Host FX Resolver</HostFxrBrandName>
|
<HostFxrBrandName>Microsoft .NET Core 1.0.0 - Host FX Resolver</HostFxrBrandName>
|
||||||
|
|
|
@ -1,82 +0,0 @@
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
|
|
||||||
param(
|
|
||||||
[string]$Architecture="x64")
|
|
||||||
|
|
||||||
$RepoRoot = "$PSScriptRoot"
|
|
||||||
|
|
||||||
# Install a stage 0
|
|
||||||
Write-Host "Installing .NET Core CLI Stage 0 from branchinfo channel"
|
|
||||||
|
|
||||||
& "$RepoRoot\scripts\obtain\dotnet-install.ps1" -Channel $env:CHANNEL -Architecture $Architecture -Verbose
|
|
||||||
if($LASTEXITCODE -ne 0) { throw "Failed to install stage0" }
|
|
||||||
|
|
||||||
# Put the stage0 on the path
|
|
||||||
$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH"
|
|
||||||
|
|
||||||
# Disable first run since we want to control all package sources
|
|
||||||
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
|
||||||
|
|
||||||
# Setup BuildTools vars
|
|
||||||
$BUILD_TOOLS_VERSION = Get-Content "$RepoRoot\BuildToolsVersion.txt"
|
|
||||||
$BUILD_TOOLS_PATH=$RepoRoot + "\build_tools"
|
|
||||||
$BUILD_TOOLS_SOURCE='https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json'
|
|
||||||
$BUILD_TOOLS_SEMAPHORE=$BUILD_TOOLS_PATH + "\init-tools.completed"
|
|
||||||
$INIT_TOOLS_LOG=$RepoRoot + "\init-tools.log"
|
|
||||||
$PROJECT_JSON_FILE=$BUILD_TOOLS_PATH + "\project.json"
|
|
||||||
$PROJECT_JSON_CONTENTS="{ `"dependencies`": { `"Microsoft.DotNet.BuildTools`": `"" + $BUILD_TOOLS_VERSION + "`" }, `"frameworks`": { `"netcoreapp1.0`": { } } }"
|
|
||||||
$PACKAGES_DIR=$RepoRoot + "\.nuget\packages"
|
|
||||||
$BUILD_TOOLS_PACKAGE_PATH=$PACKAGES_DIR + "\Microsoft.DotNet.BuildTools\" + $BUILD_TOOLS_VERSION + "\lib"
|
|
||||||
$DOTNET_EXE_CMD=$env:DOTNET_INSTALL_DIR + "\dotnet.exe"
|
|
||||||
|
|
||||||
# If build tools are already installed, escape
|
|
||||||
if (Test-Path "$BUILD_TOOLS_SEMAPHORE")
|
|
||||||
{
|
|
||||||
Write-Host "Tools are already initialized"
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for build tools
|
|
||||||
if (!(Test-Path "$BUILD_TOOLS_PATH"))
|
|
||||||
{
|
|
||||||
mkdir "$BUILD_TOOLS_PATH" | Out-Null
|
|
||||||
}
|
|
||||||
|
|
||||||
# Write the build tools project.json file
|
|
||||||
"$PROJECT_JSON_CONTENTS" | Set-Content "$PROJECT_JSON_FILE"
|
|
||||||
|
|
||||||
# Restore build tools
|
|
||||||
$args="restore $PROJECT_JSON_FILE --packages $PACKAGES_DIR --source $BUILD_TOOLS_SOURCE"
|
|
||||||
Start-Process -FilePath $DOTNET_EXE_CMD -ArgumentList $args -Wait -RedirectStandardOutput $INIT_TOOLS_LOG -NoNewWindow
|
|
||||||
if (!(Test-Path "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd"))
|
|
||||||
{
|
|
||||||
Write-Host "ERROR: Could not restore build tools correctly. See '$INIT_TOOLS_LOG' for more details"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Bring down the CLI for build tools
|
|
||||||
$DOTNET_PATH=$BUILD_TOOLS_PATH + "\dotnetcli"
|
|
||||||
|
|
||||||
Write-Host "Installing Build Tools CLI version..."
|
|
||||||
if (!(Test-Path "$DOTNET_PATH"))
|
|
||||||
{
|
|
||||||
mkdir "$DOTNET_PATH"
|
|
||||||
}
|
|
||||||
|
|
||||||
$DOTNET_VERSION = Get-Content "$RepoRoot\BuildToolsCliVersion.txt"
|
|
||||||
$DOTNET_LOCAL_PATH=$DOTNET_PATH
|
|
||||||
& "$RepoRoot\scripts\obtain\dotnet-install.ps1" -Channel "rel-1.0.0" -Version "$DOTNET_VERSION" -InstallDir "$DOTNET_LOCAL_PATH"
|
|
||||||
|
|
||||||
if (!(Test-Path "$DOTNET_LOCAL_PATH"))
|
|
||||||
{
|
|
||||||
Write-Host "Could not install Build Tools CLI version correctly"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Initialize build tools
|
|
||||||
cmd /c "$BUILD_TOOLS_PACKAGE_PATH\init-tools.cmd $RepoRoot $DOTNET_LOCAL_PATH\dotnet.exe $BUILD_TOOLS_PATH" >> "$INIT_TOOLS_LOG"
|
|
||||||
Write-Host "Done initializing tools."
|
|
||||||
Write-Host "Init-Tools completed for BuildTools Version: $BUILD_TOOLS_VERSION" > $BUILD_TOOLS_SEMAPHORE
|
|
|
@ -1,56 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
SOURCE="${BASH_SOURCE[0]}"
|
|
||||||
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
|
||||||
SOURCE="$(readlink "$SOURCE")"
|
|
||||||
[[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
|
||||||
done
|
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
|
||||||
|
|
||||||
$DIR/scripts/obtain/dotnet-install.sh --channel $CHANNEL --verbose
|
|
||||||
|
|
||||||
__init_tools_log=$DIR/init-tools.log
|
|
||||||
__BUILD_TOOLS_CLI_VERSION=$(cat "$DIR/BuildToolsCliVersion.txt")
|
|
||||||
__BUILD_TOOLS_DIR=$DIR/build_tools
|
|
||||||
__BUILD_TOOLS_CLI_DIR=$__BUILD_TOOLS_DIR/dotnetcli/
|
|
||||||
__BUILD_TOOLS_SOURCE=https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json
|
|
||||||
__BUILD_TOOLS_PACKAGE_VERSION=$(cat $DIR/BuildToolsVersion.txt)
|
|
||||||
__BUILD_TOOLS_PATH=$NUGET_PACKAGES/Microsoft.DotNet.BuildTools/$__BUILD_TOOLS_PACKAGE_VERSION/lib
|
|
||||||
__BUILD_TOOLS_SEMAPHORE=$__BUILD_TOOLS_DIR/init-tools.completed
|
|
||||||
__DOTNET_CMD=$__BUILD_TOOLS_CLI_DIR/dotnet
|
|
||||||
__PROJECT_JSON_PATH=$__BUILD_TOOLS_DIR/$__BUILD_TOOLS_PACKAGE_VERSION
|
|
||||||
__PROJECT_JSON_FILE=$__PROJECT_JSON_PATH/project.json
|
|
||||||
__PROJECT_JSON_CONTENTS="{ \"dependencies\": { \"Microsoft.DotNet.BuildTools\": \"$__BUILD_TOOLS_PACKAGE_VERSION\" }, \"frameworks\": { \"netcoreapp1.0\": { } } }"
|
|
||||||
|
|
||||||
if [ ! -e "$__PROJECT_JSON_FILE" ]; then
|
|
||||||
mkdir -p "$__PROJECT_JSON_PATH"
|
|
||||||
echo "$__PROJECT_JSON_CONTENTS" > "$__PROJECT_JSON_FILE"
|
|
||||||
|
|
||||||
if [ ! -d "$__BUILD_TOOLS_CLI_DIR" ]; then
|
|
||||||
echo "Installing Build Tools CLI Version: $__BUILD_TOOLS_CLI_VERSION"
|
|
||||||
"$DIR/scripts/obtain/dotnet-install.sh" --channel rel-1.0.0 --version "$__BUILD_TOOLS_CLI_VERSION" --install-dir "$__BUILD_TOOLS_CLI_DIR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -d "$__BUILD_TOOLS_PATH" ]; then
|
|
||||||
echo "Restoring build tools version $__BUILD_TOOLS_PACKAGE_VERSION..."
|
|
||||||
"$__DOTNET_CMD" restore "$__PROJECT_JSON_FILE" --packages "$NUGET_PACKAGES" --source "$__BUILD_TOOLS_SOURCE"
|
|
||||||
|
|
||||||
if [ ! -e "$__BUILD_TOOLS_PATH/init-tools.sh" ]; then echo "ERROR: Could not restore build tools correctly. See '$__init_tools_log' for more details."; fi
|
|
||||||
find .
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Initializing build tools..."
|
|
||||||
"$__BUILD_TOOLS_PATH/init-tools.sh" "$DIR" "$__DOTNET_CMD" "$__BUILD_TOOLS_DIR" >> "$__init_tools_log" 2>&1
|
|
||||||
echo "Init-Tools completed for BuildTools Version: $__BUILD_TOOLS_PACKAGE_VERSION" > "$__BUILD_TOOLS_SEMAPHORE"
|
|
||||||
echo "Done initializing tools"
|
|
||||||
else
|
|
||||||
echo "Tools are already initialized"
|
|
||||||
fi
|
|
||||||
|
|
|
@ -59,15 +59,35 @@ if (!(Test-Path $env:DOTNET_INSTALL_DIR))
|
||||||
mkdir $env:DOTNET_INSTALL_DIR | Out-Null
|
mkdir $env:DOTNET_INSTALL_DIR | Out-Null
|
||||||
}
|
}
|
||||||
|
|
||||||
& "$RepoRoot\init-tools.ps1" -Architecture $Architecture
|
# Disable first run since we want to control all package sources
|
||||||
if($LASTEXITCODE -ne 0) { throw "Failed to install Init Tools" }
|
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||||
|
|
||||||
|
# set the base tools directory
|
||||||
|
$toolsLocalPath = Join-Path $PSScriptRoot "build_tools"
|
||||||
|
$bootStrapperPath = Join-Path $toolsLocalPath "bootstrap.ps1"
|
||||||
|
# if the boot-strapper script doesn't exist then download it
|
||||||
|
if ((Test-Path $bootStrapperPath) -eq 0)
|
||||||
|
{
|
||||||
|
if ((Test-Path $toolsLocalPath) -eq 0)
|
||||||
|
{
|
||||||
|
mkdir $toolsLocalPath | Out-Null
|
||||||
|
}
|
||||||
|
|
||||||
|
# download boot-strapper script
|
||||||
|
Invoke-WebRequest "https://raw.githubusercontent.com/dotnet/buildtools/master/bootstrap/bootstrap.ps1" -OutFile $bootStrapperPath
|
||||||
|
}
|
||||||
|
|
||||||
|
# now execute it
|
||||||
|
& $bootStrapperPath -RepositoryRoot (Get-Location) -ToolsLocalPath $toolsLocalPath -CliLocalPath $env:DOTNET_INSTALL_DIR | Out-File (Join-Path (Get-Location) "bootstrap.log")
|
||||||
|
if ($LastExitCode -ne 0)
|
||||||
|
{
|
||||||
|
Write-Output "Boot-strapping failed with exit code $LastExitCode, see bootstrap.log for more information."
|
||||||
|
exit $LastExitCode
|
||||||
|
}
|
||||||
|
|
||||||
# Put the stage0 on the path
|
# Put the stage0 on the path
|
||||||
$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH"
|
$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH"
|
||||||
|
|
||||||
# Disable first run since we want to control all package sources
|
|
||||||
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
|
||||||
|
|
||||||
if ($NoBuild)
|
if ($NoBuild)
|
||||||
{
|
{
|
||||||
Write-Host "Not building due to --nobuild"
|
Write-Host "Not building due to --nobuild"
|
||||||
|
|
54
run-build.sh
54
run-build.sh
|
@ -6,6 +6,41 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
machine_has() {
|
||||||
|
hash "$1" > /dev/null 2>&1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
check_min_reqs() {
|
||||||
|
if ! machine_has "curl"; then
|
||||||
|
echo "run-build: Error: curl is required to download dotnet. Install curl to proceed." >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# args:
|
||||||
|
# remote_path - $1
|
||||||
|
# [out_path] - $2 - stdout if not provided
|
||||||
|
download() {
|
||||||
|
eval $invocation
|
||||||
|
|
||||||
|
local remote_path=$1
|
||||||
|
local out_path=${2:-}
|
||||||
|
|
||||||
|
local failed=false
|
||||||
|
if [ -z "$out_path" ]; then
|
||||||
|
curl --retry 10 -sSL --create-dirs $remote_path || failed=true
|
||||||
|
else
|
||||||
|
curl --retry 10 -sSL --create-dirs -o $out_path $remote_path || failed=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$failed" = true ]; then
|
||||||
|
echo "run-build: Error: Download failed" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
SOURCE="${BASH_SOURCE[0]}"
|
SOURCE="${BASH_SOURCE[0]}"
|
||||||
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
||||||
|
@ -14,7 +49,6 @@ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symli
|
||||||
done
|
done
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
||||||
REPOROOT="$DIR"
|
REPOROOT="$DIR"
|
||||||
OLDPATH="$PATH"
|
|
||||||
|
|
||||||
ARCHITECTURE="x64"
|
ARCHITECTURE="x64"
|
||||||
source "$REPOROOT/scripts/common/_prettyprint.sh"
|
source "$REPOROOT/scripts/common/_prettyprint.sh"
|
||||||
|
@ -98,7 +132,23 @@ done < "$REPOROOT/branchinfo.txt"
|
||||||
[ -z "$DOTNET_INSTALL_DIR" ] && export DOTNET_INSTALL_DIR=$REPOROOT/.dotnet_stage0/$ARCHITECTURE
|
[ -z "$DOTNET_INSTALL_DIR" ] && export DOTNET_INSTALL_DIR=$REPOROOT/.dotnet_stage0/$ARCHITECTURE
|
||||||
[ -d "$DOTNET_INSTALL_DIR" ] || mkdir -p $DOTNET_INSTALL_DIR
|
[ -d "$DOTNET_INSTALL_DIR" ] || mkdir -p $DOTNET_INSTALL_DIR
|
||||||
|
|
||||||
$REPOROOT/init-tools.sh
|
DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||||
|
toolsLocalPath="$REPOROOT/build_tools"
|
||||||
|
bootStrapperPath="$toolsLocalPath/bootstrap.sh"
|
||||||
|
if [ ! -f $bootStrapperPath ]; then
|
||||||
|
if [ ! -d $toolsLocalPath ]; then
|
||||||
|
mkdir $toolsLocalPath
|
||||||
|
fi
|
||||||
|
download "https://raw.githubusercontent.com/dotnet/buildtools/master/bootstrap/bootstrap.sh" "$bootStrapperPath"
|
||||||
|
chmod u+x $bootStrapperPath
|
||||||
|
fi
|
||||||
|
|
||||||
|
$bootStrapperPath --repositoryRoot "$REPOROOT" --toolsLocalPath "$toolsLocalPath" --cliInstallPath $DOTNET_INSTALL_DIR > bootstrap.log
|
||||||
|
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
echo "run-build: Error: Boot-strapping failed with exit code $?, see bootstrap.log for more information." >&2
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
# Put stage 0 on the PATH (for this shell only)
|
# Put stage 0 on the PATH (for this shell only)
|
||||||
PATH="$DOTNET_INSTALL_DIR:$PATH"
|
PATH="$DOTNET_INSTALL_DIR:$PATH"
|
||||||
|
|
|
@ -16,6 +16,8 @@ namespace Microsoft.DotNet.Cli.Utils
|
||||||
|
|
||||||
string RuntimeConfigJsonPath { get; }
|
string RuntimeConfigJsonPath { get; }
|
||||||
|
|
||||||
|
string FullOutputPath { get; }
|
||||||
|
|
||||||
Dictionary<string, string> EnvironmentVariables { get; }
|
Dictionary<string, string> EnvironmentVariables { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -39,6 +39,17 @@ namespace Microsoft.DotNet.Cli.Utils
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string FullOutputPath
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _project
|
||||||
|
.AllEvaluatedProperties
|
||||||
|
.FirstOrDefault(p => p.Name.Equals("TargetDir"))
|
||||||
|
.EvaluatedValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Dictionary<string, string> EnvironmentVariables
|
public Dictionary<string, string> EnvironmentVariables
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -42,19 +42,22 @@ namespace Microsoft.DotNet.Cli.Utils
|
||||||
string outputPath,
|
string outputPath,
|
||||||
string buildBasePath)
|
string buildBasePath)
|
||||||
{
|
{
|
||||||
var projectContext = GetProjectContextFromDirectory(
|
var projectFactory = new ProjectFactory(_environment);
|
||||||
|
var project = projectFactory.GetProject(
|
||||||
projectDirectory,
|
projectDirectory,
|
||||||
framework);
|
framework,
|
||||||
|
configuration,
|
||||||
|
buildBasePath,
|
||||||
|
outputPath);
|
||||||
|
|
||||||
if (projectContext == null)
|
if (project == null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var buildOutputPath =
|
var buildOutputPath = project.FullOutputPath;
|
||||||
projectContext.GetOutputPaths(configuration, buildBasePath, outputPath).RuntimeFiles.BasePath;
|
|
||||||
|
|
||||||
if (! Directory.Exists(buildOutputPath))
|
if (!Directory.Exists(buildOutputPath))
|
||||||
{
|
{
|
||||||
Reporter.Verbose.WriteLine($"outputpathresolver: {buildOutputPath} does not exist");
|
Reporter.Verbose.WriteLine($"outputpathresolver: {buildOutputPath} does not exist");
|
||||||
return null;
|
return null;
|
||||||
|
@ -62,34 +65,7 @@ namespace Microsoft.DotNet.Cli.Utils
|
||||||
|
|
||||||
return _environment.GetCommandPathFromRootPath(buildOutputPath, commandName);
|
return _environment.GetCommandPathFromRootPath(buildOutputPath, commandName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ProjectContext GetProjectContextFromDirectory(string directory, NuGetFramework framework)
|
|
||||||
{
|
|
||||||
if (directory == null || framework == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var projectRootPath = directory;
|
|
||||||
|
|
||||||
if (!File.Exists(Path.Combine(projectRootPath, Project.FileName)))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var projectContext = ProjectContext.Create(
|
|
||||||
projectRootPath,
|
|
||||||
framework,
|
|
||||||
RuntimeEnvironmentRidExtensions.GetAllCandidateRuntimeIdentifiers());
|
|
||||||
|
|
||||||
if (projectContext.RuntimeIdentifier == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return projectContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal override CommandResolutionStrategy GetCommandResolutionStrategy()
|
internal override CommandResolutionStrategy GetCommandResolutionStrategy()
|
||||||
{
|
{
|
||||||
return CommandResolutionStrategy.OutputPath;
|
return CommandResolutionStrategy.OutputPath;
|
||||||
|
|
|
@ -67,6 +67,15 @@ namespace Microsoft.DotNet.Cli.Utils
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string FullOutputPath
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return
|
||||||
|
ProjectContext.GetOutputPaths(_configuration, _buildBasePath, _outputPath).RuntimeFiles.BasePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Dictionary<string, string> EnvironmentVariables
|
public Dictionary<string, string> EnvironmentVariables
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -66,7 +66,9 @@ namespace Microsoft.DotNet.ProjectJsonMigration
|
||||||
projectFileDependenciesForFramework = project.GetTargetFramework(framework).Dependencies;
|
projectFileDependenciesForFramework = project.GetTargetFramework(framework).Dependencies;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var projectFileDependency in projectFileDependenciesForFramework)
|
foreach (var projectFileDependency in
|
||||||
|
projectFileDependenciesForFramework.Where(p =>
|
||||||
|
p.LibraryRange.TypeConstraint == LibraryDependencyTarget.Project))
|
||||||
{
|
{
|
||||||
var dependencyName = projectFileDependency.Name;
|
var dependencyName = projectFileDependency.Name;
|
||||||
|
|
||||||
|
@ -105,7 +107,8 @@ namespace Microsoft.DotNet.ProjectJsonMigration
|
||||||
FindPossibleProjectDependencies(projectContext.ProjectFile.ProjectFilePath);
|
FindPossibleProjectDependencies(projectContext.ProjectFile.ProjectFilePath);
|
||||||
|
|
||||||
var projectDependencies = new List<ProjectDependency>();
|
var projectDependencies = new List<ProjectDependency>();
|
||||||
foreach (var projectExport in projectExports)
|
foreach (var projectExport in
|
||||||
|
projectExports.Where(p => p.Library.Identity.Type == LibraryType.Project))
|
||||||
{
|
{
|
||||||
var projectExportName = projectExport.Library.Identity.Name;
|
var projectExportName = projectExport.Library.Identity.Name;
|
||||||
ProjectDependency projectDependency;
|
ProjectDependency projectDependency;
|
||||||
|
|
|
@ -273,8 +273,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Transforms
|
||||||
mergedItem.UnionExcludes(existingItem.Excludes());
|
mergedItem.UnionExcludes(existingItem.Excludes());
|
||||||
mergedItem.UnionExcludes(item.Excludes());
|
mergedItem.UnionExcludes(item.Excludes());
|
||||||
|
|
||||||
mergedItem.AddMetadata(existingItem.Metadata);
|
mergedItem.AddMetadata(MergeMetadata(existingItem.Metadata, item.Metadata));
|
||||||
mergedItem.AddMetadata(item.Metadata);
|
|
||||||
|
|
||||||
item.RemoveIncludes(commonIncludes);
|
item.RemoveIncludes(commonIncludes);
|
||||||
existingItem.RemoveIncludes(commonIncludes);
|
existingItem.RemoveIncludes(commonIncludes);
|
||||||
|
@ -289,6 +288,37 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Transforms
|
||||||
return mergeResult;
|
return mergeResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ICollection<ProjectMetadataElement> MergeMetadata(
|
||||||
|
ICollection<ProjectMetadataElement> existingMetadataElements,
|
||||||
|
ICollection<ProjectMetadataElement> newMetadataElements)
|
||||||
|
{
|
||||||
|
var mergedMetadata = new List<ProjectMetadataElement>(existingMetadataElements);
|
||||||
|
|
||||||
|
foreach (var newMetadata in newMetadataElements)
|
||||||
|
{
|
||||||
|
var existingMetadata = mergedMetadata.FirstOrDefault(m =>
|
||||||
|
m.Name.Equals(newMetadata.Name, StringComparison.OrdinalIgnoreCase));
|
||||||
|
if (existingMetadata == null)
|
||||||
|
{
|
||||||
|
mergedMetadata.Add(newMetadata);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MergeMetadata(existingMetadata, newMetadata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mergedMetadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MergeMetadata(ProjectMetadataElement existingMetadata, ProjectMetadataElement newMetadata)
|
||||||
|
{
|
||||||
|
if (existingMetadata.Value != newMetadata.Value)
|
||||||
|
{
|
||||||
|
existingMetadata.Value = string.Join(";", new [] { existingMetadata.Value, newMetadata.Value });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private IEnumerable<ProjectItemElement> FindExistingItemsWithSameCondition(
|
private IEnumerable<ProjectItemElement> FindExistingItemsWithSameCondition(
|
||||||
ProjectItemElement item,
|
ProjectItemElement item,
|
||||||
ProjectRootElement project,
|
ProjectRootElement project,
|
||||||
|
|
|
@ -69,7 +69,9 @@ namespace Microsoft.DotNet.Tools.Restore3
|
||||||
{
|
{
|
||||||
var msbuildArgs = new List<string>()
|
var msbuildArgs = new List<string>()
|
||||||
{
|
{
|
||||||
"/t:Restore"
|
"/NoLogo",
|
||||||
|
"/t:Restore",
|
||||||
|
"/ConsoleLoggerParameters:Verbosity=Minimal"
|
||||||
};
|
};
|
||||||
|
|
||||||
if (sourceOption.HasValue())
|
if (sourceOption.HasValue())
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
// 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.
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
using Microsoft.DotNet.ProjectModel;
|
using Microsoft.DotNet.ProjectModel;
|
||||||
|
@ -15,6 +16,16 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
|
||||||
{
|
{
|
||||||
private static readonly NuGetFramework s_desktopTestFramework = FrameworkConstants.CommonFrameworks.Net451;
|
private static readonly NuGetFramework s_desktopTestFramework = FrameworkConstants.CommonFrameworks.Net451;
|
||||||
|
|
||||||
|
private RepoDirectoriesProvider _repoDirectoriesProvider;
|
||||||
|
|
||||||
|
public GivenAProjectDependenciesCommandFactory()
|
||||||
|
{
|
||||||
|
_repoDirectoriesProvider = new RepoDirectoriesProvider();
|
||||||
|
Environment.SetEnvironmentVariable(
|
||||||
|
Constants.MSBUILD_EXE_PATH,
|
||||||
|
Path.Combine(_repoDirectoriesProvider.Stage2Sdk, "MSBuild.dll"));
|
||||||
|
}
|
||||||
|
|
||||||
[WindowsOnlyFact]
|
[WindowsOnlyFact]
|
||||||
public void It_resolves_desktop_apps_defaulting_to_Debug_Configuration()
|
public void It_resolves_desktop_apps_defaulting_to_Debug_Configuration()
|
||||||
{
|
{
|
||||||
|
@ -46,6 +57,40 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
|
||||||
Path.GetFileName(command.CommandName).Should().Be("dotnet-desktop-and-portable.exe");
|
Path.GetFileName(command.CommandName).Should().Be("dotnet-desktop-and-portable.exe");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WindowsOnlyFact]
|
||||||
|
public void It_resolves_desktop_apps_with_MSBuild_defaulting_to_Debug_Configuration()
|
||||||
|
{
|
||||||
|
var configuration = "Debug";
|
||||||
|
|
||||||
|
var testAssetManager = new TestAssetsManager(Path.Combine(RepoRoot, "TestAssets", "TestProjects"));
|
||||||
|
var testInstance = testAssetManager.CreateTestInstance("MSBuildAppWithMultipleFrameworksAndTools", "i")
|
||||||
|
.WithLockFiles();
|
||||||
|
|
||||||
|
var projectFile = Path.Combine(testInstance.TestRoot, "MSBuildAppWithMultipleFrameworksAndTools.csproj");
|
||||||
|
|
||||||
|
new Restore3Command()
|
||||||
|
.ExecuteWithCapturedOutput($"{projectFile} -s {_repoDirectoriesProvider.TestPackages}")
|
||||||
|
.Should()
|
||||||
|
.Pass();
|
||||||
|
|
||||||
|
new Build3Command()
|
||||||
|
.Execute($"{projectFile} --configuration {configuration}")
|
||||||
|
.Should()
|
||||||
|
.Pass();
|
||||||
|
|
||||||
|
var factory = new ProjectDependenciesCommandFactory(
|
||||||
|
s_desktopTestFramework,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
testInstance.TestRoot);
|
||||||
|
|
||||||
|
var command = factory.Create("dotnet-desktop-and-portable", null);
|
||||||
|
|
||||||
|
command.CommandName.Should().Contain(Path.Combine(testInstance.TestRoot, "bin", configuration));
|
||||||
|
Path.GetFileName(command.CommandName).Should().Be("dotnet-desktop-and-portable.exe");
|
||||||
|
}
|
||||||
|
|
||||||
[WindowsOnlyFact]
|
[WindowsOnlyFact]
|
||||||
public void It_resolves_desktop_apps_when_configuration_is_Debug()
|
public void It_resolves_desktop_apps_when_configuration_is_Debug()
|
||||||
{
|
{
|
||||||
|
|
|
@ -260,6 +260,40 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
||||||
contentItems.First().GetMetadataWithName("PackagePath").Value.Should().BeEmpty();
|
contentItems.First().GetMetadataWithName("PackagePath").Value.Should().BeEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Migrating_same_file_with_multiple_mappings_string_joins_the_mappings_in_PackagePath()
|
||||||
|
{
|
||||||
|
var mockProj = RunPackOptionsRuleOnPj(@"
|
||||||
|
{
|
||||||
|
""packOptions"": {
|
||||||
|
""files"": {
|
||||||
|
""include"": [""path/to/some/file.cs""],
|
||||||
|
""mappings"": {
|
||||||
|
""other/path/file.cs"": ""path/to/some/file.cs"",
|
||||||
|
""different/path/file1.cs"": ""path/to/some/file.cs""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}");
|
||||||
|
|
||||||
|
var expectedPackagePath = string.Join(
|
||||||
|
";",
|
||||||
|
new [] {
|
||||||
|
Path.Combine("different", "path"),
|
||||||
|
Path.Combine("other", "path")
|
||||||
|
});
|
||||||
|
|
||||||
|
var contentItems = mockProj.Items
|
||||||
|
.Where(item => item.ItemType.Equals("Content", StringComparison.Ordinal))
|
||||||
|
.Where(item =>
|
||||||
|
item.GetMetadataWithName("Pack").Value == "true" &&
|
||||||
|
item.GetMetadataWithName("PackagePath") != null);
|
||||||
|
|
||||||
|
contentItems.Count().Should().Be(1);
|
||||||
|
contentItems.First().Include.Should().Be(@"path\to\some\file.cs");
|
||||||
|
contentItems.First().GetMetadataWithName("PackagePath").Value.Should().Be(expectedPackagePath);
|
||||||
|
}
|
||||||
|
|
||||||
private ProjectRootElement RunPackOptionsRuleOnPj(string packOptions, string testDirectory = null)
|
private ProjectRootElement RunPackOptionsRuleOnPj(string packOptions, string testDirectory = null)
|
||||||
{
|
{
|
||||||
testDirectory = testDirectory ?? Temp.CreateDirectory().Path;
|
testDirectory = testDirectory ?? Temp.CreateDirectory().Path;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
using Microsoft.Build.Construction;
|
using Microsoft.Build.Construction;
|
||||||
using Microsoft.DotNet.ProjectJsonMigration;
|
using Microsoft.DotNet.ProjectJsonMigration;
|
||||||
using Microsoft.DotNet.ProjectModel;
|
using Microsoft.DotNet.ProjectModel;
|
||||||
|
using Microsoft.DotNet.TestFramework;
|
||||||
using Microsoft.DotNet.Tools.Test.Utilities;
|
using Microsoft.DotNet.Tools.Test.Utilities;
|
||||||
using NuGet.Frameworks;
|
using NuGet.Frameworks;
|
||||||
using System;
|
using System;
|
||||||
|
@ -39,6 +40,27 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
||||||
projectReference.Parent.Condition.Should().BeEmpty();
|
projectReference.Parent.Condition.Should().BeEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void It_does_not_migrate_a_dependency_with_target_package_that_has_a_matching_project_as_a_ProjectReference()
|
||||||
|
{
|
||||||
|
var testAssetsManager = GetTestGroupTestAssetsManager("NonRestoredTestProjects");
|
||||||
|
var solutionDirectory =
|
||||||
|
testAssetsManager.CreateTestInstance("AppWithProjectDependencyAsTarget", callingMethod: "p").Path;
|
||||||
|
|
||||||
|
var appDirectory = Path.Combine(solutionDirectory, "TestApp");
|
||||||
|
|
||||||
|
var projectContext = ProjectContext.Create(appDirectory, FrameworkConstants.CommonFrameworks.NetCoreApp10);
|
||||||
|
var mockProj = ProjectRootElement.Create();
|
||||||
|
var testSettings = new MigrationSettings(appDirectory, appDirectory, "1.0.0", mockProj, null);
|
||||||
|
var testInputs = new MigrationRuleInputs(new[] {projectContext}, mockProj, mockProj.AddItemGroup(),
|
||||||
|
mockProj.AddPropertyGroup());
|
||||||
|
new MigrateProjectDependenciesRule().Apply(testSettings, testInputs);
|
||||||
|
|
||||||
|
var projectReferences = mockProj.Items.Where(
|
||||||
|
item => item.ItemType.Equals("ProjectReference", StringComparison.Ordinal));
|
||||||
|
projectReferences.Should().BeEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void TFM_specific_Project_dependencies_are_migrated_to_ProjectReference_under_condition_ItemGroup()
|
public void TFM_specific_Project_dependencies_are_migrated_to_ProjectReference_under_condition_ItemGroup()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue