Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ref/Microsoft.Build/net/Microsoft.Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1051,6 +1051,7 @@ public BuildResult() { }
public Microsoft.Build.Execution.ProjectInstance ProjectStateAfterBuild { get { throw null; } set { } }
public System.Collections.Generic.IDictionary<string, Microsoft.Build.Execution.TargetResult> ResultsByTarget { get { throw null; } }
public int SubmissionId { get { throw null; } }
public System.Collections.Generic.HashSet<string> Targets { get { throw null; } set { } }
public void AddResultsForTarget(string target, Microsoft.Build.Execution.TargetResult result) { }
public bool HasResultsForTarget(string target) { throw null; }
public void MergeResults(Microsoft.Build.Execution.BuildResult results) { }
Expand Down
1 change: 1 addition & 0 deletions ref/Microsoft.Build/netstandard/Microsoft.Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1046,6 +1046,7 @@ public BuildResult() { }
public Microsoft.Build.Execution.ProjectInstance ProjectStateAfterBuild { get { throw null; } set { } }
public System.Collections.Generic.IDictionary<string, Microsoft.Build.Execution.TargetResult> ResultsByTarget { get { throw null; } }
public int SubmissionId { get { throw null; } }
public System.Collections.Generic.HashSet<string> Targets { get { throw null; } set { } }
public void AddResultsForTarget(string target, Microsoft.Build.Execution.TargetResult result) { }
public bool HasResultsForTarget(string target) { throw null; }
public void MergeResults(Microsoft.Build.Execution.BuildResult results) { }
Expand Down
102 changes: 62 additions & 40 deletions scripts/Deploy-MSBuild.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,30 @@ Param(
[string] $runtime = "Desktop"
)

Set-StrictMode -Version "Latest"
$ErrorActionPreference = "Stop"

function Copy-WithBackup ($origin) {
$destinationPath = Join-Path -Path $destination -ChildPath (Split-Path $origin -leaf)
$directoryPart = Join-Path -Path $destination $origin.IntermediaryDirectories
$destinationPath = Join-Path -Path $directoryPart (Split-Path $origin.SourceFile -leaf)

if (Test-Path $destinationPath -PathType Leaf) {
# Back up previous copy of the file
Copy-Item $destinationPath $BackupFolder -ErrorAction Stop
}

Copy-Item $origin $destinationPath -ErrorAction Stop
if (!(Test-Path $directoryPart)) {
[system.io.directory]::CreateDirectory($directoryPart)
}

Copy-Item $origin.SourceFile $destinationPath -ErrorAction Stop

echo "Copied $($origin.SourceFile) to $destinationPath"
}

function FileToCopy([string] $sourceFileRelativeToRepoRoot, [string] $intermediaryDirectories)
{
return [PSCustomObject]@{"SourceFile"=$([IO.Path]::Combine($PSScriptRoot, "..", $sourceFileRelativeToRepoRoot)); "IntermediaryDirectories"=$intermediaryDirectories}
}

# TODO: find destination in PATH if not specified
Expand All @@ -36,58 +51,65 @@ if ($runtime -eq "Desktop") {
$targetFramework = "netcoreapp2.1"
}

$bootstrapBinDirectory = "artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework"

$filesToCopyToBin = @(
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Build.dll"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Build.Framework.dll"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Build.Tasks.Core.dll"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Build.Utilities.Core.dll"

"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Common.CrossTargeting.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Common.CurrentVersion.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Common.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.CSharp.CrossTargeting.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.CSharp.CurrentVersion.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.CSharp.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Managed.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Managed.Before.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Managed.After.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Net.props"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.NetFramework.CurrentVersion.props"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.NetFramework.CurrentVersion.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.NetFramework.props"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.NetFramework.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.VisualBasic.CrossTargeting.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.VisualBasic.CurrentVersion.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.VisualBasic.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.Build.dll"
FileToCopy "$bootstrapBinDirectory\Microsoft.Build.Framework.dll"
FileToCopy "$bootstrapBinDirectory\Microsoft.Build.Tasks.Core.dll"
FileToCopy "$bootstrapBinDirectory\Microsoft.Build.Utilities.Core.dll"

FileToCopy "$bootstrapBinDirectory\en\Microsoft.Build.resources.dll" "en"
FileToCopy "$bootstrapBinDirectory\en\Microsoft.Build.Tasks.Core.resources.dll" "en"
FileToCopy "$bootstrapBinDirectory\en\Microsoft.Build.Utilities.Core.resources.dll" "en"
FileToCopy "$bootstrapBinDirectory\en\MSBuild.resources.dll" "en"

FileToCopy "$bootstrapBinDirectory\Microsoft.Common.CrossTargeting.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.Common.CurrentVersion.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.Common.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.CSharp.CrossTargeting.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.CSharp.CurrentVersion.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.CSharp.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.Managed.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.Managed.Before.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.Managed.After.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.Net.props"
FileToCopy "$bootstrapBinDirectory\Microsoft.NetFramework.CurrentVersion.props"
FileToCopy "$bootstrapBinDirectory\Microsoft.NetFramework.CurrentVersion.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.NetFramework.props"
FileToCopy "$bootstrapBinDirectory\Microsoft.NetFramework.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.VisualBasic.CrossTargeting.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.VisualBasic.CurrentVersion.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.VisualBasic.targets"
)

if ($runtime -eq "Desktop") {
$runtimeSpecificFiles = @(
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\MSBuild.exe"
"artifacts\bin\Microsoft.Build.Conversion\$configuration\$targetFramework\Microsoft.Build.Conversion.Core.dll"
"artifacts\bin\Microsoft.Build.Engine\$configuration\$targetFramework\Microsoft.Build.Engine.dll"

"artifacts\bin\MSBuildTaskHost\$configuration\net35\MSBuildTaskHost.exe"
"artifacts\bin\MSBuildTaskHost\$configuration\net35\MSBuildTaskHost.pdb"

"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Data.Entity.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.ServiceModel.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.WinFx.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.WorkflowBuildExtensions.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Microsoft.Xaml.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Workflow.targets"
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\Workflow.VisualBasic.targets"
FileToCopy "$bootstrapBinDirectory\MSBuild.exe"
FileToCopy "artifacts\bin\Microsoft.Build.Conversion\$configuration\$targetFramework\Microsoft.Build.Conversion.Core.dll"
FileToCopy "artifacts\bin\Microsoft.Build.Engine\$configuration\$targetFramework\Microsoft.Build.Engine.dll"

FileToCopy "artifacts\bin\MSBuildTaskHost\$configuration\net35\MSBuildTaskHost.exe"
FileToCopy "artifacts\bin\MSBuildTaskHost\$configuration\net35\MSBuildTaskHost.pdb"

FileToCopy "$bootstrapBinDirectory\Microsoft.Data.Entity.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.ServiceModel.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.WinFx.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.WorkflowBuildExtensions.targets"
FileToCopy "$bootstrapBinDirectory\Microsoft.Xaml.targets"
FileToCopy "$bootstrapBinDirectory\Workflow.targets"
FileToCopy "$bootstrapBinDirectory\Workflow.VisualBasic.targets"
)
} else {
$runtimeSpecificFiles = @(
"artifacts\bin\MSBuild.Bootstrap\$configuration\$targetFramework\MSBuild.dll"
FileToCopy "$bootstrapBinDirectory\MSBuild.dll"
)
}

$filesToCopyToBin += $runtimeSpecificFiles

foreach ($file in $filesToCopyToBin) {
Copy-WithBackup $([IO.Path]::Combine($PSScriptRoot, "..", $file))
Copy-WithBackup $file
}

Write-Host -ForegroundColor Green "Copy succeeded"
Expand Down
20 changes: 12 additions & 8 deletions src/Build.UnitTests/BackEnd/BuildManager_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3433,7 +3433,8 @@ public void WarningsAreTreatedAsErrorsButTargetsStillSucceed()
}

/// <summary>
/// Helper for cache tests. Builds a project and verifies the right cache files are created.
/// Helper for memory reduction caching tests (msbuild caches configs and build results when memory usage gets high).
/// Builds a project and verifies the right cache files are created.
/// </summary>
private static string BuildAndCheckCache(BuildManager localBuildManager, IEnumerable<string> exceptCacheDirectories)
{
Expand All @@ -3459,9 +3460,15 @@ private static string BuildAndCheckCache(BuildManager localBuildManager, IEnumer
try
{
var services = new HostServices();
BuildRequestData data = new BuildRequestData(fileName, new Dictionary<string, string>(), MSBuildDefaultToolsVersion, new[] { "One", "Two", "Three" }, services);
var data = new BuildRequestData(
projectFullPath: fileName,
globalProperties: new Dictionary<string, string>(),
toolsVersion: MSBuildDefaultToolsVersion,
targetsToBuild: new[] {"One", "Two", "Three"},
hostServices: services);
var result = localBuildManager.PendBuildRequest(data).Execute();
Assert.Equal(BuildResultCode.Success, result.OverallResult); // "Test project failed to build correctly."

result.OverallResult.ShouldBe(BuildResultCode.Success);
}
finally
{
Expand All @@ -3473,12 +3480,9 @@ private static string BuildAndCheckCache(BuildManager localBuildManager, IEnumer
string directory = Directory.EnumerateDirectories(cacheDirectory).Except(exceptCacheDirectories).First();

// Within this directory should be a set of target results files, one for each of the targets we invoked.
var resultsFiles = Directory.EnumerateFiles(directory).Select(Path.GetFileName);
var resultsFiles = Directory.EnumerateFiles(directory).Select(Path.GetFileName).ToArray();

Assert.Equal(3, resultsFiles.Count());
Assert.Contains("One.cache", resultsFiles);
Assert.Contains("Two.cache", resultsFiles);
Assert.Contains("Three.cache", resultsFiles);
resultsFiles.ShouldBeSameIgnoringOrder(new []{"One.cache", "Two.cache", "Three.cache"});

// Return the cache directory created for this build.
return directory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@ private void TestSkipIsolationConstraints(string glob, string referencePath, boo

glob = $"$([MSBuild]::Escape('{glob}'))";

projectContents = projectContents ?? $@"
projectContents ??= $@"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it doesn't affect the functionality or it's unrelated to the topic of a PR, then perhaps changing this one specific line should be avoided (reduced amount of files changed in PR)?
If not, then why this specific line?

<Project>
<ItemGroup>
<{ItemTypeNames.GraphIsolationExemptReference} Include=`{glob};ShouldNotMatchAnything`/>
Expand Down
Loading