Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
6a01af7
Dont ngen taskhost Fixes our lack of optprof data (#8737)
Forgind May 9, 2023
d611cbf
Bump version
JanKrivanek Jun 20, 2023
c70978d
Merge pull request #8926 from JanKrivanek/vs17.6-optprof-patch
JanKrivanek Jun 21, 2023
c319e69
Bump version
JanKrivanek Jun 21, 2023
74e5766
Merge pull request #8932 from dotnet/JanKrivanek-patch-5
JanKrivanek Jun 21, 2023
69d3555
Update System.Security.Cryptography.Pkcs
JanKrivanek Jun 29, 2023
d193c88
Bump version
JanKrivanek Jun 29, 2023
2679cf5
Merge pull request #8977 from dotnet/JanKrivanek-patch-4
JanKrivanek Jun 29, 2023
d00a8a9
Workaround for incorrect encoding of PUA range in GB18030 Uri string …
sujitnayak Feb 20, 2024
1d1abd5
[release/vs17.7] Onboard 1es templates (#9924)
YuliiaKovalova Mar 28, 2024
05c7b41
bump arcade version
YuliiaKovalova Apr 22, 2024
ab6b461
bump MicrosoftNetCompilersToolsetVersion
YuliiaKovalova Apr 22, 2024
30ff340
bump MicrosoftNetCompilersToolsetVersion
YuliiaKovalova Apr 22, 2024
da7eb6c
update sha for Microsoft.Net.Compilers.Toolset
surayya-MS Apr 22, 2024
5eb99e6
Merge pull request #10053 from surayya-MS/exp/surayya-MS/1es_vs17.6
surayya-MS Apr 22, 2024
a4064f1
Merge branch 'vs17.8' into merge/vs17.6-to-vs17.8
surayya-MS Apr 24, 2024
4c8a0ca
CG alert cleaning on VS17.8 (#10725)
GangWang01 Oct 16, 2024
e657d4d
[vs17.8] update arcade and fix build (#10838)
JanProvaznik Oct 23, 2024
338edd9
[vs17.8] Sync internal and public branches (#10858)
YuliiaKovalova Oct 24, 2024
25135e6
Update dependencies from https://github.com/dotnet/arcade build 20241…
dotnet-maestro[bot] Oct 29, 2024
6802148
[vs17.8] Update dependencies from dotnet/arcade (#10986)
dotnet-maestro[bot] Nov 20, 2024
aeedcc8
Update dependencies from https://github.com/dotnet/arcade build 20241…
dotnet-maestro[bot] Nov 25, 2024
c1b109d
Update VersionPrefix to 17.8.12
surayya-MS Nov 28, 2024
8183f53
[vs17.8] Update dependencies from dotnet/arcade (#11030)
surayya-MS Nov 28, 2024
7bb97fb
[vs17.8] Backport VS insertion pipeline YMLs (#11066)
github-actions[bot] Dec 3, 2024
06cfc00
Update .opt-prof.yml (#11112)
JanKrivanek Dec 9, 2024
1b63486
[vs17.8] Fix setting package versions in VS insertion (#11103)
github-actions[bot] Dec 9, 2024
ff98e81
Update vs/msbuild version (#11115)
JanKrivanek Dec 9, 2024
54d16ed
Update xcopy-msbuild version to 17.8.5 (#11118)
GangWang01 Dec 10, 2024
d747003
Add inter-branch merge flow file (#11123)
GangWang01 Dec 11, 2024
c116a3b
Update .opt-prof.yml (#11121)
JanKrivanek Dec 11, 2024
e2abee0
Bump up System.Text.Json to 8.0.5 (#11134)
GangWang01 Dec 13, 2024
09beddc
[vs17.8] Update dependencies from dotnet/arcade (#11218)
dotnet-maestro[bot] Jan 7, 2025
81c00a4
disallow package conflicts by default and add override parameter (#11…
JanProvaznik Jan 9, 2025
1048ce7
[vs17.8] Update dependencies from dotnet/arcade (#11261)
dotnet-maestro[bot] Jan 14, 2025
31744df
Don't autocomplete servicing insertions (#11283)
JanProvaznik Jan 15, 2025
7761f6a
[vs17.8] Select proper VS channel (#11246)
JanKrivanek Jan 20, 2025
c3ade83
[vs17.8] Update dependencies from dotnet/arcade (#11306)
dotnet-maestro[bot] Jan 21, 2025
0e18be8
[vs17.10] Update dependencies from dotnet/arcade (#11408)
dotnet-maestro[bot] Feb 10, 2025
2b19be4
[vs17.11] Update dependencies from dotnet/arcade (#11406)
dotnet-maestro[bot] Feb 10, 2025
d95b3aa
[vs17.8] Update dependencies from dotnet/arcade (#11404)
dotnet-maestro[bot] Feb 11, 2025
739ecf1
Update dependencies from https://github.com/dotnet/arcade build 20250…
dotnet-maestro[bot] Feb 12, 2025
ba2b896
[vs17.8] Update dependencies from dotnet/arcade (#11431)
GangWang01 Feb 14, 2025
a7c17e4
[17.8] remove optprof image name, restore arcade tools correctl (#11438)
JanProvaznik Feb 14, 2025
2e8ba02
Merge branch 'vs17.10' into merge/vs17.8-to-vs17.10
GangWang01 Feb 17, 2025
b1de185
Remove unnecessary change from branch vs17.8
GangWang01 Feb 17, 2025
2a9c525
Update version prefix to 17.10.22
GangWang01 Feb 17, 2025
67ca1d3
[automated] Merge branch 'vs17.8' => 'vs17.10' (#11423)
GangWang01 Feb 19, 2025
75b408a
[vs17.10] Update dependencies from dotnet/arcade (#11433)
dotnet-maestro[bot] Feb 19, 2025
776b0d3
[vs17.11] Update dependencies from dotnet/arcade (#11432)
dotnet-maestro[bot] Feb 19, 2025
8c9f84e
[vs17.12] Update dependencies from dotnet/arcade (#11437)
dotnet-maestro[bot] Feb 19, 2025
10d3b65
[vs17.13] Update dependencies from dotnet/arcade (#11436)
dotnet-maestro[bot] Feb 19, 2025
bfbb056
[vs17.8] Official Build MpPreference workaround (#11471)
github-actions[bot] Feb 20, 2025
19ac89c
Merge branch 'vs17.10' into merge/vs17.8-to-vs17.10
JanProvaznik Feb 20, 2025
a2b49e3
bump
JanProvaznik Feb 20, 2025
f305233
[automated] Merge branch 'vs17.8' => 'vs17.10' (#11473)
GangWang01 Feb 21, 2025
6546d95
Merge branch 'vs17.11' into merge/vs17.10-to-vs17.11
GangWang01 Feb 21, 2025
dfa87fb
Update version prefix to 17.11.28
GangWang01 Feb 21, 2025
b4a2592
[automated] Merge branch 'vs17.10' => 'vs17.11' (#11475)
GangWang01 Feb 21, 2025
18b3035
Revert ".slnx support - use the new parser for .sln and .slnx (#10836…
rainersigwald Feb 25, 2025
70df276
Merge branch 'vs17.12' into merge/vs17.11-to-vs17.12
GangWang01 Feb 25, 2025
f42f144
Update version to 17.12.32
GangWang01 Feb 25, 2025
8972960
Update Version (#11493)
JanProvaznik Feb 25, 2025
90ed697
[vs17.13] Don't mark synthesized projects dirty when SDKs define prop…
surayya-MS Feb 25, 2025
8314f8f
[automated] Merge branch 'vs17.11' => 'vs17.12' (#11476)
JanProvaznik Feb 25, 2025
3741c1a
Merge branch 'vs17.13' into merge/vs17.12-to-vs17.13
GangWang01 Feb 26, 2025
3d0782b
Update version to 17.13.18
GangWang01 Feb 26, 2025
73f9d5d
[vs17.13] Update dependencies from dotnet/source-build-reference-pack…
dotnet-maestro[bot] Feb 26, 2025
f505af5
bump version
JanProvaznik Feb 26, 2025
7a6aa79
Merge branch 'vs17.13' into merge/vs17.12-to-vs17.13
JanProvaznik Feb 26, 2025
f1b335d
Hide ephemeral ProjectRootElements from import enumerations (#11474)
rainersigwald Feb 26, 2025
0d9f5a3
Bump version
rainersigwald Feb 26, 2025
d87bc64
[automated] Merge branch 'vs17.12' => 'vs17.13' (#11495)
JanProvaznik Feb 27, 2025
5d635a7
Merge branch 'main' into merge/vs17.13-to-main
GangWang01 Feb 27, 2025
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: 0 additions & 1 deletion .opt-prof.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ stages:
cloudBuildResourceName: ComponentBuildUnderTest
testLabPoolName: VS-Platform # The test lab pool to run your tests in
testMachineCleanUpStrategy: ${{parameters.testMachineCleanUpStrategy}}
testMachineImageName: Windows-11-Enterprise-23H2
visualStudioSigning: Test
variables:
- name: branchName # The branch in the VS repo the bootstrapper was based on
Expand Down
2 changes: 1 addition & 1 deletion documentation/wiki/ChangeWaves.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ A wave of features is set to "rotate out" (i.e. become standard functionality) t
## Current Rotation of Change Waves

### 17.14
- [.SLNX support - use the new parser for .sln and .slnx](https://github.com/dotnet/msbuild/pull/10836)
- ~[.SLNX support - use the new parser for .sln and .slnx](https://github.com/dotnet/msbuild/pull/10836)~ reverted after compat problems discovered
- [Support custom culture in RAR](https://github.com/dotnet/msbuild/pull/11000)
- [VS Telemetry](https://github.com/dotnet/msbuild/pull/11255)

Expand Down
5 changes: 2 additions & 3 deletions eng/BootStrapMsBuild.targets
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@
<_NuGetRuntimeDependencies Include="%(RuntimeCopyLocalItems.Identity)" Condition="'@(RuntimeCopyLocalItems->Contains('Newtonsoft.Json'))' == 'true'" />
<_NuGetRuntimeDependencies Include="%(RuntimeCopyLocalItems.Identity)" Condition="'@(RuntimeCopyLocalItems->Contains('NuGetSdkResolver'))' == 'true'" />
<_NuGetRuntimeDependencies Include="%(RuntimeCopyLocalItems.Identity)" Condition="'@(RuntimeCopyLocalItems->Contains('Microsoft.Extensions.'))' == 'true'" />
<_NuGetRuntimeDependencies Include="%(RuntimeCopyLocalItems.Identity)" Condition="'@(RuntimeCopyLocalItems->Contains('Microsoft.VisualStudio.SolutionPersistence'))' == 'true'" />


<!-- NuGet.targets and NuGet.RestoreEx.targets will be in the RuntimeTargetsCopyLocalItems ItemGroup -->
<_NuGetRuntimeDependencies Include="%(RuntimeTargetsCopyLocalItems.Identity)" Condition="'@(RuntimeTargetsCopyLocalItems->Contains('NuGet.'))' == 'true'" />

Expand All @@ -49,7 +48,7 @@

<Target Name="RemoveExtraAssemblyReferences" BeforeTargets="ResolveAssemblyReferences">
<!-- This is really hacky, but these references will cause issues when trying to 'build' this project.
To acquire the NuGet binaries we depend on for local run-time ('bootstrap'), we are using a PackageReference (to
To acquire the NuGet binaries we depend on for local run-time ('bootstrap'), we we are using a PackageReference (to
'NuGet.Build.Tasks' and 'Microsoft.Build.NuGetSdkResolver'). This has the advantage of using NuGets compatibility
check to ensure we choose the right version of those assemblies. But, at 'bootstrap' time these runtime dependencies
need to be in a specific location that does not mesh with NuGet. To resolve this, we include the default
Expand Down
694 changes: 619 additions & 75 deletions src/Build.OM.UnitTests/Construction/SolutionFile_Tests.cs

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/Build.UnitTests/Construction/ProjectRootElement_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System;
using System.Text;
using Microsoft.Build.Construction;
using Microsoft.Build.Evaluation;
using Xunit;

#nullable disable
Expand Down Expand Up @@ -116,5 +117,16 @@ public void ProjectLoadedStrippingCommentsAndWhiteSpaceIsReadOnly()
Assert.Equal(string.Empty, children[0].ChildNodes[1].Value);
}
}

[Fact]
public void CreateEphemeralCannotBeDirtied()
{
var projectRootElement = ProjectRootElement.CreateEphemeral(ProjectCollection.GlobalProjectCollection.ProjectRootElementCache);
var versionBeforeMarkDirty = projectRootElement.Version;

projectRootElement.MarkDirty("test", "test");

Assert.Equal(projectRootElement.Version, versionBeforeMarkDirty);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Microsoft.Build.Construction;
using Microsoft.Build.Exceptions;
using Microsoft.Build.Shared;
Expand All @@ -17,11 +16,11 @@

namespace Microsoft.Build.UnitTests.Construction
{
public class SolutionFile_OldParser_Tests
public class SolutionFile_Tests
{
public ITestOutputHelper TestOutputHelper { get; }

public SolutionFile_OldParser_Tests(ITestOutputHelper testOutputHelper)
public SolutionFile_Tests(ITestOutputHelper testOutputHelper)
{
TestOutputHelper = testOutputHelper;
}
Expand Down Expand Up @@ -105,42 +104,6 @@ public void ParseFirstProjectLineWithDifferentSpacing()
proj.ProjectGuid.ShouldBe("Unique name-GUID");
}

/// <summary>
/// A slightly more complicated test where there is some different whitespace.
/// </summary>
[Fact]
public void ParseSolutionWithDifferentSpacing()
{
string solutionFileContents =
@"
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project(' { Project GUID} ') = ' Project name ', ' Relative path to project file ' , ' {0ABED153-9451-483C-8140-9E8D7306B216} '
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|AnyCPU = Debug|AnyCPU
Release|AnyCPU = Release|AnyCPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0ABED153-9451-483C-8140-9E8D7306B216}.Debug|AnyCPU.ActiveCfg = Debug|AnyCPU
{0ABED153-9451-483C-8140-9E8D7306B216}.Debug|AnyCPU.Build.0 = Debug|AnyCPU
{0ABED153-9451-483C-8140-9E8D7306B216}.Release|AnyCPU.ActiveCfg = Release|AnyCPU
{0ABED153-9451-483C-8140-9E8D7306B216}.Release|AnyCPU.Build.0 = Release|AnyCPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
";

SolutionFile solution = ParseSolutionHelper(solutionFileContents);

Assert.Equal("Project name", solution.ProjectsInOrder[0].ProjectName);
Assert.Equal("Relative path to project file", solution.ProjectsInOrder[0].RelativePath);
Assert.Equal("{0ABED153-9451-483C-8140-9E8D7306B216}", solution.ProjectsInOrder[0].ProjectGuid);
}

/// <summary>
/// First project line with an empty project name. This is somewhat malformed, but we should
/// still behave reasonably instead of crashing.
Expand Down Expand Up @@ -724,43 +687,6 @@ public void ParseFirstProjectLineWhereProjectNameHasSpecialCharacters()
proj.ProjectGuid.ShouldBe("Unique name-GUID");
}

/// <summary>
/// Test some characters that are valid in a file name but that also could be
/// considered a delimiter by a parser. Does quoting work for special characters?
/// </summary>
[Fact]
public void ParseSolutionWhereProjectNameHasSpecialCharacters()
{
string solutionFileContents =
@"
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project('{Project GUID}') = 'MyProject,(=IsGreat)', 'Relative path to project file' , '{0ABED153-9451-483C-8140-9E8D7306B216}'
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|AnyCPU = Debug|AnyCPU
Release|AnyCPU = Release|AnyCPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0ABED153-9451-483C-8140-9E8D7306B216}.Debug|AnyCPU.ActiveCfg = Debug|AnyCPU
{0ABED153-9451-483C-8140-9E8D7306B216}.Debug|AnyCPU.Build.0 = Debug|AnyCPU
{0ABED153-9451-483C-8140-9E8D7306B216}.Release|AnyCPU.ActiveCfg = Release|AnyCPU
{0ABED153-9451-483C-8140-9E8D7306B216}.Release|AnyCPU.Build.0 = Release|AnyCPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
";

SolutionFile solution = ParseSolutionHelper(solutionFileContents);

Assert.Equal("MyProject,(=IsGreat)", solution.ProjectsInOrder[0].ProjectName);
Assert.Equal("Relative path to project file", solution.ProjectsInOrder[0].RelativePath);
Assert.Equal("{0ABED153-9451-483C-8140-9E8D7306B216}", solution.ProjectsInOrder[0].ProjectGuid);
}

/// <summary>
/// Test some characters that are valid in a file name but that also could be
/// considered a delimiter by a parser. Does quoting work for special characters?
Expand Down Expand Up @@ -2429,58 +2355,5 @@ public void ParseSolutionWithParentedPaths()
solution.ProjectsInOrder[0].AbsolutePath.ShouldBe(Path.GetFullPath(Path.Combine(Path.GetDirectoryName(solution.FullPath)!, expectedRelativePath)));
solution.ProjectsInOrder[0].ProjectGuid.ShouldBe("{0ABED153-9451-483C-8140-9E8D7306B216}");
}

/// <summary>
/// Parse solution file with comments
/// </summary>
[Fact]
public void ParseSolutionWithComments()
{
const string solutionFileContent = @"
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29123.89
MinimumVisualStudioVersion = 10.0.40219.1
Project('{9A19103F-16F7-4668-BE54-9A1E7A4F7556}') = 'SlnCommentTest', 'SlnCommentTest.csproj', '{00000000-0000-0000-FFFF-FFFFFFFFFFFF}'
EndProject
Project('{2150E333-8FDC-42A3-9474-1A3956D46DE8}') = 'Solution Items', 'Solution Items', '{054DED3B-B890-4652-B449-839F581E5D86}'
ProjectSection(SolutionItems) = preProject
SlnFile.txt = SlnFile.txt
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{00000000-0000-0000-FFFF-FFFFFFFFFFFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00000000-0000-0000-FFFF-FFFFFFFFFFFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00000000-0000-0000-FFFF-FFFFFFFFFFFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00000000-0000-0000-FFFF-FFFFFFFFFFFF}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FFFFFFFF-FFFF-FFFF-0000-000000000000}
EndGlobalSection
EndGlobal
";

StringBuilder stringBuilder = new StringBuilder();

// Put comment between all lines
const string comment = "\t# comment";
string[] lines = solutionFileContent.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < lines.Length; i++)
{
stringBuilder.AppendLine(comment);
stringBuilder.AppendLine(lines[i]);
}
stringBuilder.AppendLine(comment);

Should.NotThrow(() => ParseSolutionHelper(stringBuilder.ToString()));
}
}
}
8 changes: 4 additions & 4 deletions src/Build.UnitTests/Construction/SolutionFilter_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,14 @@ public void SolutionFilterFiltersProjects(bool graphBuild)
");
// Slashes here (and in the .slnf) are hardcoded as backslashes intentionally to support the common case.
TransientTestFile solutionFile = testEnvironment.CreateFile(simpleProjectFolder, "SimpleProject.sln",
"""
@"
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29326.124
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleProject", "SimpleProject\SimpleProject.csproj", "{79B5EBA6-5D27-4976-BC31-14422245A59A}"
Project(""{9A19103F-16F7-4668-BE54-9A1E7A4F7556}"") = ""SimpleProject"", ""SimpleProject\SimpleProject.csproj"", ""{79B5EBA6-5D27-4976-BC31-14422245A59A}""
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClassLibrary", "..\ClassLibrary\ClassLibrary\ClassLibrary.csproj", "{8EFCCA22-9D51-4268-90F7-A595E11FCB2D}"
Project(""{9A19103F-16F7-4668-BE54-9A1E7A4F7556}"") = ""ClassLibrary"", ""..\ClassLibrary\ClassLibrary\ClassLibrary.csproj"", ""{8EFCCA22-9D51-4268-90F7-A595E11FCB2D}""
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -107,7 +107,7 @@ public void SolutionFilterFiltersProjects(bool graphBuild)
SolutionGuid = {DE7234EC-0C4D-4070-B66A-DCF1B4F0CFEF}
EndGlobalSection
EndGlobal
""");
");
TransientTestFile filterFile = testEnvironment.CreateFile(folder, "solutionFilter.slnf",
/*lang=json*/
"""
Expand Down
Loading