Merge branch 'release/8.0.2xx'

This commit is contained in:
Jason Zhai 2023-10-09 20:54:34 -07:00
commit f7cadeb3e0
27 changed files with 662 additions and 93 deletions

View file

@ -7,6 +7,7 @@
<clear />
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
<!-- Begin: Package sources from DotNet-msbuild-Trusted -->
<add key="darc-pub-DotNet-msbuild-Trusted-585e097" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-DotNet-msbuild-Trusted-585e0976/nuget/v3/index.json" />
<!-- End: Package sources from DotNet-msbuild-Trusted -->
<!-- Begin: Package sources from dotnet-sdk -->
<!-- End: Package sources from dotnet-sdk -->

View file

@ -25,8 +25,8 @@
<VersionFeature21>30</VersionFeature21>
<VersionFeature31>32</VersionFeature31>
<VersionFeature50>17</VersionFeature50>
<VersionFeature60>21</VersionFeature60>
<VersionFeature70>10</VersionFeature70>
<VersionFeature60>22</VersionFeature60>
<VersionFeature70>11</VersionFeature70>
<!-- Should be kept in sync with VersionFeature70. It should match the version of Microsoft.NET.ILLink.Tasks
referenced by the same 7.0 SDK that references the 7.0.VersionFeature70 runtime pack. -->
<_NET70ILLinkPackVersion>7.0.100-1.23211.1</_NET70ILLinkPackVersion>
@ -244,13 +244,15 @@
</PropertyGroup>
<!-- Workload manifest package versions -->
<PropertyGroup>
<MauiFeatureBand>8.0.100-preview.6</MauiFeatureBand>
<MauiWorkloadManifestVersion>8.0.0-preview.6.8686</MauiWorkloadManifestVersion>
<XamarinAndroidWorkloadManifestVersion>34.0.0-preview.6.359</XamarinAndroidWorkloadManifestVersion>
<XamarinIOSWorkloadManifestVersion>16.4.8646-net8-p6</XamarinIOSWorkloadManifestVersion>
<XamarinMacCatalystWorkloadManifestVersion>16.4.8646-net8-p6</XamarinMacCatalystWorkloadManifestVersion>
<XamarinMacOSWorkloadManifestVersion>13.3.8646-net8-p6</XamarinMacOSWorkloadManifestVersion>
<XamarinTvOSWorkloadManifestVersion>16.4.8646-net8-p6</XamarinTvOSWorkloadManifestVersion>
<AspireFeatureBand>8.0.100-rc.1</AspireFeatureBand>
<AspireWorkloadManifestVersion>8.0.0-alpha.23471.13</AspireWorkloadManifestVersion>
<MauiFeatureBand>8.0.100-rc.1</MauiFeatureBand>
<MauiWorkloadManifestVersion>8.0.0-rc.1.9171</MauiWorkloadManifestVersion>
<XamarinAndroidWorkloadManifestVersion>34.0.0-rc.1.432</XamarinAndroidWorkloadManifestVersion>
<XamarinIOSWorkloadManifestVersion>16.4.8825-net8-rc1</XamarinIOSWorkloadManifestVersion>
<XamarinMacCatalystWorkloadManifestVersion>16.4.8825-net8-rc1</XamarinMacCatalystWorkloadManifestVersion>
<XamarinMacOSWorkloadManifestVersion>13.3.8825-net8-rc1</XamarinMacOSWorkloadManifestVersion>
<XamarinTvOSWorkloadManifestVersion>16.4.8825-net8-rc1</XamarinTvOSWorkloadManifestVersion>
<!-- Workloads from dotnet/emsdk -->
<MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportPackageVersion>9.0.0-alpha.1.23465.3</MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportPackageVersion>
<EmscriptenWorkloadManifestVersion>$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportPackageVersion)</EmscriptenWorkloadManifestVersion>

View file

@ -127,7 +127,7 @@ jobs:
artifact: ${{ parameters.reuseBuildArtifactsFrom }}_${{ parameters.architecture }}_Artifacts
patterns: |
**/Private.SourceBuilt.Artifacts.*.tar.gz
**/dotnet-sdk-*.tar.gz
**/dotnet-sdk-+([0-9]).+([0-9]).+([0-9])*.tar.gz
displayName: Download Previous Build
- task: CopyFiles@2

View file

@ -4,6 +4,7 @@
<UsingTask AssemblyFile="$(LeakDetectionTasksAssembly)" TaskName="CheckForPoison" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="WriteUsageBurndownData" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="ReplaceTextInFile" />
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="CreateSdkSymbolsLayout" />
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
@ -56,6 +57,84 @@
<MSBuild Projects="$(RepoProjectsDir)$(RootRepo).proj" Targets="WritePrebuiltUsageData;ReportPrebuiltUsage" />
</Target>
<Target Name="DiscoverSymbolsTarballs"
AfterTargets="Build">
<ItemGroup>
<SymbolsTarball Include="$(OutputPath)Symbols.*.tar.gz" />
</ItemGroup>
</Target>
<Target Name="ExtractSymbolsTarballs"
AfterTargets="Build"
DependsOnTargets="DiscoverSymbolsTarballs"
Outputs="%(SymbolsTarball.Identity)">
<PropertyGroup>
<Filename>$([System.IO.Path]::GetFileName('%(SymbolsTarball.Identity)'))</Filename>
<RepositoryName>$(Filename.Split('.')[1])</RepositoryName>
<UnifiedSymbolsLayout>$(ArtifactsTmpDir)Symbols</UnifiedSymbolsLayout>
<DestinationFolder>$(UnifiedSymbolsLayout)/$(RepositoryName)</DestinationFolder>
</PropertyGroup>
<MakeDir Directories="$(DestinationFolder)" />
<Exec Command="tar -xzf %(SymbolsTarball.Identity) -C $(DestinationFolder)"
WorkingDirectory="$(SymbolsRoot)" />
<Delete Files="%(SymbolsTarball.Identity)" />
</Target>
<!-- After building, repackage symbols into a single tarball. -->
<Target Name="RepackageSymbols"
AfterTargets="Build"
DependsOnTargets="
DetermineMicrosoftSourceBuildIntermediateInstallerVersion;
DiscoverSymbolsTarballs;
ExtractSymbolsTarballs">
<PropertyGroup>
<UnifiedSymbolsTarball>$(OutputPath)dotnet-symbols-$(MicrosoftSourceBuildIntermediateInstallerVersion)-$(TargetRid).tar.gz</UnifiedSymbolsTarball>
</PropertyGroup>
<Exec Command="tar --numeric-owner -czf $(UnifiedSymbolsTarball) *"
WorkingDirectory="$(UnifiedSymbolsLayout)" />
<Message Importance="High" Text="Packaged all symbols in '$(UnifiedSymbolsTarball)'" />
</Target>
<!-- After building, create the sdk symbols tarball. -->
<Target Name="CreateSdkSymbolsTarball"
AfterTargets="Build"
DependsOnTargets="RepackageSymbols">
<ItemGroup>
<SdkTarballItem Include="$(OutputPath)dotnet-sdk-*$(TarBallExtension)"
Exclude="$(OutputPath)dotnet-sdk-symbols-*$(TarBallExtension)" />
</ItemGroup>
<PropertyGroup>
<SdkSymbolsLayout>$(ArtifactsTmpDir)SdkSymbols</SdkSymbolsLayout>
<SdkSymbolsTarball>$(OutputPath)dotnet-sdk-symbols-$(MicrosoftSourceBuildIntermediateInstallerVersion)-$(TargetRid).tar.gz</SdkSymbolsTarball>
<SdkLayout>$(ArtifactsTmpDir)Sdk</SdkLayout>
<SdkTarball>%(SdkTarballItem.Identity)</SdkTarball>
</PropertyGroup>
<MakeDir Directories="$(SdkLayout)" />
<Exec Command="tar -xzf $(SdkTarball) -C $(SdkLayout)"
WorkingDirectory="$(OutputPath)" />
<CreateSdkSymbolsLayout SdkLayoutPath="$(SdkLayout)"
AllSymbolsPath="$(UnifiedSymbolsLayout)"
SdkSymbolsLayoutPath="$(SdkSymbolsLayout)"
FailOnMissingPDBs="true" />
<Exec Command="tar --numeric-owner -czf $(SdkSymbolsTarball) *"
WorkingDirectory="$(SdkSymbolsLayout)" />
<Message Importance="High" Text="Packaged sdk symbols in '$(SdkSymbolsTarball)'" />
<RemoveDir Directories="$(UnifiedSymbolsLayout)" />
<RemoveDir Directories="$(SdkSymbolsLayout)" />
<RemoveDir Directories="$(SdkLayout)" />
</Target>
<!--
Dev scenario: rewrite a prebuilt-report. This makes it easy to add data to an existing
prebuilt report without performing another full build. This doesn't reevalutate which packages
@ -104,7 +183,8 @@
<Target Name="RunSmokeTest">
<ItemGroup>
<SdkTarballItem Include="$(SourceBuiltTarBallPath)**/dotnet-sdk*$(TarBallExtension)" />
<SdkTarballItem Include="$(SourceBuiltTarBallPath)**/dotnet-sdk*$(TarBallExtension)"
Exclude="$(SourceBuiltTarBallPath)**/dotnet-sdk-symbols*$(TarBallExtension)" />
<SourceBuiltArtifactsItem Include="$(SourceBuiltTarBallPath)**/Private.SourceBuilt.Artifacts.*$(TarBallExtension)" />
</ItemGroup>

View file

@ -30,7 +30,7 @@
These URLs can't be composed from their base URL and version as we read them from the
prep.sh and pipeline scripts, outside of MSBuild.
-->
<PrivateSourceBuiltArtifactsUrl>https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.8.0.100-rc.1.23410.1.centos.8-x64.tar.gz</PrivateSourceBuiltArtifactsUrl>
<PrivateSourceBuiltSdkUrl_CentOS8Stream>https://dotnetcli.azureedge.net/source-built-artifacts/sdks/dotnet-sdk-8.0.100-rc.1.23410.1-centos.8-x64.tar.gz</PrivateSourceBuiltSdkUrl_CentOS8Stream>
<PrivateSourceBuiltArtifactsUrl>https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.8.0.100-rc.1.23455.1.centos.8-x64.tar.gz</PrivateSourceBuiltArtifactsUrl>
<PrivateSourceBuiltSdkUrl_CentOS8Stream>https://dotnetcli.azureedge.net/source-built-artifacts/sdks/dotnet-sdk-8.0.100-rc.1.23455.1-centos.8-x64.tar.gz</PrivateSourceBuiltSdkUrl_CentOS8Stream>
</PropertyGroup>
</Project>

View file

@ -19,10 +19,12 @@
</ItemDefinitionGroup>
<ItemGroup>
<LinuxRid Include="linux-x64" />
<LinuxRid Include="linux-musl-x64" />
<LinuxRid Include="linux-arm64" />
<LinuxRid Include="linux-musl-arm64" />
<UnixRid Include="linux-x64" />
<UnixRid Include="linux-musl-x64" />
<UnixRid Include="linux-arm64" />
<UnixRid Include="linux-musl-arm64" />
<UnixRid Include="osx-x64" />
<UnixRid Include="osx-arm64" />
</ItemGroup>
<!-- These packages will be replaced with ms-built packages downloaded from official package feeds-->
@ -51,44 +53,44 @@
AfterTargets="CollectPackageDownloads"
Returns="@(PackageDownload)">
<ItemGroup>
<!-- Generate a cross-product between runtime packs and Linux RIDs -->
<RuntimePackWithLinuxRid Include="@(RuntimePack)">
<LinuxRid>%(LinuxRid.Identity)</LinuxRid>
</RuntimePackWithLinuxRid>
<!-- Generate a cross-product between runtime packs and Unix RIDs -->
<RuntimePackWithUnixRid Include="@(RuntimePack)">
<UnixRid>%(UnixRid.Identity)</UnixRid>
</RuntimePackWithUnixRid>
<!-- Generate a cross-product between portable packages and Linux RIDs -->
<PortablePackageWithLinuxRid Include="@(PortablePackage)">
<LinuxRid>%(LinuxRid.Identity)</LinuxRid>
</PortablePackageWithLinuxRid>
<!-- Generate a cross-product between portable packages and Unix RIDs -->
<PortablePackageWithUnixRid Include="@(PortablePackage)">
<UnixRid>%(UnixRid.Identity)</UnixRid>
</PortablePackageWithUnixRid>
</ItemGroup>
<ItemGroup>
<!--
Generate package names for runtime packs by concatenating the base name with the Linux RID
Generate package names for runtime packs by concatenating the base name with the Unix RID
(e.g. Microsoft.Aspnetcore.App.Runtime.linux-x64)
-->
<PackageWithName Include="@(RuntimePackWithLinuxRid)">
<PackageName>%(RuntimePackWithLinuxRid.Identity).%(RuntimePackWithLinuxRid.LinuxRid)</PackageName>
<PackageWithName Include="@(RuntimePackWithUnixRid)">
<PackageName>%(RuntimePackWithUnixRid.Identity).%(RuntimePackWithUnixRid.UnixRid)</PackageName>
</PackageWithName>
<!--
Include the base name of each portable package (e.g. Microsoft.NETCore.ILAsm)
Exclude any that are native packages.
-->
<PackageWithName Include="@(PortablePackageWithLinuxRid)" Condition=" '%(PortablePackageWithLinuxRid.IsNative)' != 'true' ">
<PackageName>%(PortablePackageWithLinuxRid.Identity)</PackageName>
<PackageWithName Include="@(PortablePackageWithUnixRid)" Condition=" '%(PortablePackageWithUnixRid.IsNative)' != 'true' ">
<PackageName>%(PortablePackageWithUnixRid.Identity)</PackageName>
</PackageWithName>
<!--
Generate Linux RID package names for portable packages by concatenating the base name with the Linux RID
Generate Unix RID package names for portable packages by concatenating the base name with the Unix RID
(e.g. runtime.linux-x64.Microsoft.NETCore.ILAsm)
Do this for two groups: native and non-native packages. They have different naming conventions.
-->
<PackageWithName Include="@(PortablePackageWithLinuxRid)" Condition=" '%(PortablePackageWithLinuxRid.IsNative)' != 'true' ">
<PackageName>runtime.%(PortablePackageWithLinuxRid.LinuxRid).%(PortablePackageWithLinuxRid.Identity)</PackageName>
<PackageWithName Include="@(PortablePackageWithUnixRid)" Condition=" '%(PortablePackageWithUnixRid.IsNative)' != 'true' ">
<PackageName>runtime.%(PortablePackageWithUnixRid.UnixRid).%(PortablePackageWithUnixRid.Identity)</PackageName>
</PackageWithName>
<PackageWithName Include="@(PortablePackageWithLinuxRid)" Condition=" '%(PortablePackageWithLinuxRid.IsNative)' == 'true' ">
<PackageName>runtime.%(PortablePackageWithLinuxRid.LinuxRid).runtime.native.%(PortablePackageWithLinuxRid.Identity)</PackageName>
<PackageWithName Include="@(PortablePackageWithUnixRid)" Condition=" '%(PortablePackageWithUnixRid.IsNative)' == 'true' ">
<PackageName>runtime.%(PortablePackageWithUnixRid.UnixRid).runtime.native.%(PortablePackageWithUnixRid.Identity)</PackageName>
</PackageWithName>
</ItemGroup>

View file

@ -0,0 +1,154 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection.Metadata;
using System.Reflection.PortableExecutable;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace Microsoft.DotNet.Build.Tasks
{
// Creates a symbols layout that matches the SDK layout
public class CreateSdkSymbolsLayout : Task
{
/// <summary>
/// Path to SDK layout.
/// </summary>
[Required]
public string SdkLayoutPath { get; set; }
/// <summary>
/// Path to all source-built symbols, flat or with folder hierarchy.
/// </summary>
[Required]
public string AllSymbolsPath { get; set; }
/// <summary>
/// Path to SDK symbols layout - will be created if it doesn't exist.
/// </summary>
[Required]
public string SdkSymbolsLayoutPath { get; set; }
/// <summary>
/// If true, fails the build if any PDBs are missing.
/// </summary>
public bool FailOnMissingPDBs { get; set; }
public override bool Execute()
{
IList<string> filesWithoutPDBs = GenerateSymbolsLayout(IndexAllSymbols());
if (filesWithoutPDBs.Count > 0)
{
LogErrorOrWarning(FailOnMissingPDBs, $"Did not find PDBs for the following SDK files:");
foreach (string file in filesWithoutPDBs)
{
LogErrorOrWarning(FailOnMissingPDBs, file);
}
}
return !Log.HasLoggedErrors;
}
private void LogErrorOrWarning(bool isError, string message)
{
if (FailOnMissingPDBs)
{
Log.LogError(message);
}
else
{
Log.LogWarning(message);
}
}
private IList<string> GenerateSymbolsLayout(Hashtable allPdbGuids)
{
List<string> filesWithoutPDBs = new List<string>();
if (Directory.Exists(SdkSymbolsLayoutPath))
{
Directory.Delete(SdkSymbolsLayoutPath, true);
}
foreach (string file in Directory.GetFiles(SdkLayoutPath, "*", SearchOption.AllDirectories))
{
if (file.EndsWith(".dll", StringComparison.InvariantCultureIgnoreCase) &&
!file.EndsWith(".resources.dll", StringComparison.InvariantCultureIgnoreCase))
{
string guid = string.Empty;
using var pdbStream = File.OpenRead(file);
using var peReader = new PEReader(pdbStream);
try
{
// Check if pdb is embedded
if (peReader.ReadDebugDirectory().Any(entry => entry.Type == DebugDirectoryEntryType.EmbeddedPortablePdb))
{
continue;
}
var debugDirectory = peReader.ReadDebugDirectory().First(entry => entry.Type == DebugDirectoryEntryType.CodeView);
var codeViewData = peReader.ReadCodeViewDebugDirectoryData(debugDirectory);
guid = $"{codeViewData.Guid.ToString("N").Replace("-", string.Empty)}";
}
catch (Exception e) when (e is BadImageFormatException || e is InvalidOperationException)
{
// Ignore binaries without debug info
continue;
}
if (guid != string.Empty)
{
if (!allPdbGuids.ContainsKey(guid))
{
filesWithoutPDBs.Add(file.Substring(SdkLayoutPath.Length + 1));
}
else
{
// Copy matching pdb to symbols path, preserving sdk binary's hierarchy
string sourcePath = (string)allPdbGuids[guid]!;
string destinationPath =
file.Replace(SdkLayoutPath, SdkSymbolsLayoutPath)
.Replace(Path.GetFileName(file), Path.GetFileName(sourcePath));
Directory.CreateDirectory(Path.GetDirectoryName(destinationPath)!);
File.Copy(sourcePath, destinationPath, true);
}
}
}
}
return filesWithoutPDBs;
}
public Hashtable IndexAllSymbols()
{
Hashtable allPdbGuids = new Hashtable();
foreach (string file in Directory.GetFiles(AllSymbolsPath, "*.pdb", SearchOption.AllDirectories))
{
using var pdbFileStream = File.OpenRead(file);
var metadataProvider = MetadataReaderProvider.FromPortablePdbStream(pdbFileStream);
var metadataReader = metadataProvider.GetMetadataReader();
if (metadataReader.DebugMetadataHeader == null)
{
continue;
}
var id = new BlobContentId(metadataReader.DebugMetadataHeader.Id);
string guid = $"{id.Guid:N}";
if (!string.IsNullOrEmpty(guid) && !allPdbGuids.ContainsKey(guid))
{
allPdbGuids.Add(guid, file);
}
}
return allPdbGuids;
}
}
}

View file

@ -1,6 +1,6 @@
{
"tools": {
"dotnet": "8.0.100-rc.1.23410.12"
"dotnet": "8.0.100-rc.1.23455.8"
},
"msbuild-sdks": {
"Microsoft.Build.CentralPackageVersions": "2.0.1",

View file

@ -12,6 +12,12 @@
<BuildCommandArgs>$(BuildCommandArgs) /p:PortableRid=$(_baseOS)-$(Platform)</BuildCommandArgs>
<BuildCommandArgs>$(BuildCommandArgs) /p:TargetRid=$(TargetRid)</BuildCommandArgs>
<!-- Propagate RID set in source-build to sdk repo -->
<_platformIndex>$(NETCoreSdkPortableRuntimeIdentifier.LastIndexOf('-'))</_platformIndex>
<_baseOS>$(NETCoreSdkPortableRuntimeIdentifier.Substring(0, $(_platformIndex)))</_baseOS>
<BuildCommandArgs>$(BuildCommandArgs) /p:PortableRid=$(_baseOS)-$(Platform)</BuildCommandArgs>
<BuildCommandArgs>$(BuildCommandArgs) /p:TargetRid=$(TargetRid)</BuildCommandArgs>
<!-- Just like mono, arm does not support NativeAot -->
<BuildCommandArgs Condition="'$(BuildArchitecture)' == 'arm'">$(BuildCommandArgs) /p:NativeAotSupported=false</BuildCommandArgs>

View file

@ -6,6 +6,8 @@
<BuildCommandArgs>$(BuildCommandArgs) /p:SemanticVersioningV1=true</BuildCommandArgs>
<BuildCommand>$(ProjectDirectory)\eng\common\build$(ShellExtension) $(BuildCommandArgs)</BuildCommand>
<DeterministicBuildOptOut>true</DeterministicBuildOptOut>
<!-- IDE0090: https://github.com/microsoft/vstest/pull/4674 -->
<RepoNoWarns>IDE0090</RepoNoWarns>
</PropertyGroup>
<ItemGroup>

View file

@ -34,8 +34,7 @@ public class BasicScenarioTests : SmokeTests
{
yield return new(nameof(BasicScenarioTests), language, DotNetTemplate.Console,
// R2R is not supported on Mono (see https://github.com/dotnet/runtime/issues/88419#issuecomment-1623762676)
// Disable R2R tests due to https://github.com/dotnet/source-build/issues/3591
DotNetActions.Build | DotNetActions.Run | DotNetActions.PublishComplex);
DotNetActions.Build | DotNetActions.Run | (DotNetHelper.ShouldPublishComplex() ? DotNetActions.None : DotNetActions.PublishComplex) | (helper.IsMonoRuntime ? DotNetActions.None : DotNetActions.PublishR2R));
yield return new(nameof(BasicScenarioTests), language, DotNetTemplate.ClassLib, DotNetActions.Build | DotNetActions.Publish);
yield return new(nameof(BasicScenarioTests), language, DotNetTemplate.XUnit, DotNetActions.Test);
yield return new(nameof(BasicScenarioTests), language, DotNetTemplate.NUnit, DotNetActions.Test);

View file

@ -19,9 +19,15 @@ public class DotNetFormatTests : SmokeTests
/// <Summary>
/// Format an unformatted project and verify that the output matches the pre-computed solution.
/// </Summary>
//[Fact] - Re-enable once https://github.com/dotnet/sdk/issues/27332 is resolved. Tracking - https://github.com/dotnet/source-build/issues/3004
[Fact]
public void FormatProject()
{
if (Config.TargetRid.Contains("alpine"))
{
// Skipping this test on Alpine due to https://github.com/dotnet/format/issues/1945
return;
}
string unformattedCsFilePath = Path.Combine(BaselineHelper.GetAssetsDirectory(), UnformattedFileName);
string projectDirectory = DotNetHelper.ExecuteNew("console", nameof(FormatProject), "C#");

View file

@ -126,7 +126,7 @@ internal class DotNetHelper
}
}
public static void ConfigureProcess(Process process, string? workingDirectory, bool setPath = false)
public static void ConfigureProcess(Process process, string? workingDirectory)
{
if (workingDirectory != null)
{
@ -137,11 +137,7 @@ internal class DotNetHelper
process.StartInfo.EnvironmentVariables["DOTNET_SKIP_FIRST_TIME_EXPERIENCE"] = "1";
process.StartInfo.EnvironmentVariables["DOTNET_ROOT"] = Config.DotNetDirectory;
process.StartInfo.EnvironmentVariables["NUGET_PACKAGES"] = PackagesDirectory;
if (setPath)
{
process.StartInfo.EnvironmentVariables["PATH"] = $"{Config.DotNetDirectory}:{Environment.GetEnvironmentVariable("PATH")}";
}
process.StartInfo.EnvironmentVariables["PATH"] = $"{Config.DotNetDirectory}:{Environment.GetEnvironmentVariable("PATH")}";
}
public void ExecuteBuild(string projectName) =>
@ -290,6 +286,9 @@ internal class DotNetHelper
private static string GetProjectDirectory(string projectName) => Path.Combine(ProjectsDirectory, projectName);
public static bool ShouldPublishComplex() =>
string.Equals(Config.TargetArchitecture,"ppc64le") || string.Equals(Config.TargetArchitecture,"s390x");
private class WebAppValidator
{
private readonly ITestOutputHelper _outputHelper;

View file

@ -20,7 +20,7 @@ public class DotNetWatchTests : SmokeTests
bool outputChanged = false;
DotNetHelper.ExecuteCmd(
"watch run",
"watch run --non-interactive",
workingDirectory: projectDirectory,
processConfigCallback: processConfigCallback,
expectedExitCode: null, // The exit code does not reflect whether or not dotnet watch is working properly

View file

@ -17,10 +17,14 @@ internal static class ExecuteHelper
string args,
ITestOutputHelper outputHelper,
bool logOutput = false,
bool excludeInfo = false,
Action<Process>? configureCallback = null,
int millisecondTimeout = -1)
{
outputHelper.WriteLine($"Executing: {fileName} {args}");
if (!excludeInfo)
{
outputHelper.WriteLine($"Executing: {fileName} {args}");
}
Process process = new()
{

View file

@ -21,7 +21,7 @@ public class OmniSharpTests : SmokeTests
// Update version as new releases become available: https://github.com/OmniSharp/omnisharp-roslyn/releases
private const string OmniSharpReleaseVersion = "1.39.8";
private string OmniSharpDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "omnisharp");
private string OmniSharpDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), nameof(OmniSharpTests));
public OmniSharpTests(ITestOutputHelper outputHelper) : base(outputHelper) { }
@ -51,7 +51,7 @@ public class OmniSharpTests : SmokeTests
OutputHelper,
logOutput: true,
millisecondTimeout: 5000,
configureCallback: (process) => DotNetHelper.ConfigureProcess(process, projectDirectory, setPath: true));
configureCallback: (process) => DotNetHelper.ConfigureProcess(process, projectDirectory));
Assert.NotEqual(0, executeResult.Process.ExitCode);
Assert.DoesNotContain("ERROR", executeResult.StdOut);

View file

@ -0,0 +1,128 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Xunit;
using Xunit.Abstractions;
namespace Microsoft.DotNet.SourceBuild.SmokeTests;
public class SourcelinkTests : SmokeTests
{
private static string SourcelinkRoot { get; } = Path.Combine(Directory.GetCurrentDirectory(), nameof(SourcelinkTests));
public SourcelinkTests(ITestOutputHelper outputHelper) : base(outputHelper) { }
/// <summary>
/// Verifies that all symbols have valid sourcelinks.
/// </summary>
[Fact]
public void VerifySourcelinks()
{
if (Directory.Exists(SourcelinkRoot))
{
Directory.Delete(SourcelinkRoot, true);
}
Directory.CreateDirectory(SourcelinkRoot);
IList<string> failedFiles = ValidateSymbols(ExtractSymbolsPackages(GetAllSymbolsPackages()), InitializeSourcelinkTool());
if (failedFiles.Count > 0)
{
OutputHelper.WriteLine($"Sourcelink verification failed for the following files:");
foreach (string file in failedFiles)
{
OutputHelper.WriteLine(file);
}
}
Assert.True(failedFiles.Count == 0);
}
/// <summary>
/// Initializes sourcelink tool.
/// Extracts the dotnet-sourcelink tool package from PSB arhive.
/// </summary>
/// <returns>Path to sourcelink tool binary.</returns>
private string InitializeSourcelinkTool()
{
const string SourcelinkToolPackageNamePattern = "dotnet-sourcelink*nupkg";
const string SourcelinkToolBinaryFilename = "dotnet-sourcelink.dll";
string toolPackageDir = Directory.CreateDirectory(Path.Combine(SourcelinkRoot, "sourcelink-tool")).FullName;
Utilities.ExtractTarball(Config.SourceBuiltArtifactsPath, toolPackageDir, SourcelinkToolPackageNamePattern);
string extractedToolPath = Directory.CreateDirectory(Path.Combine(toolPackageDir, "extracted")).FullName;
Utilities.ExtractNupkg(Utilities.GetFile(toolPackageDir, SourcelinkToolPackageNamePattern), extractedToolPath);
return Utilities.GetFile(extractedToolPath, SourcelinkToolBinaryFilename);
}
private IEnumerable<string> GetAllSymbolsPackages()
{
/*
At the moment we validate sourcelinks from runtime symbols package.
The plan is to make symbols, from all repos, available in source-build artifacts.
Once that's available, this code will be modified to validate all available symbols.
Tracking issue: https://github.com/dotnet/source-build/issues/3612
*/
// Runtime symbols package lives in the same directory as PSB artifacts.
// i.e. <repo-root>/artifacts/x64/Release/runtime/dotnet-runtime-symbols-fedora.36-x64-8.0.0-preview.7.23355.7.tar.gz
yield return Utilities.GetFile(Path.GetDirectoryName(Config.SourceBuiltArtifactsPath), "dotnet-runtime-symbols-*.tar.gz");
}
/// <summary>
/// Extracts symbols packages to subdirectories of the common symbols root directory.
/// </summary>
/// <returns>Path to common symbols root directory.</returns>
private string ExtractSymbolsPackages(IEnumerable<string> packages)
{
string symbolsRoot = Directory.CreateDirectory(Path.Combine(SourcelinkRoot, "symbols")).FullName;
foreach (string package in packages)
{
Assert.True(package.EndsWith(".tar.gz"), $"Package extension is not supported: {package}");
DirectoryInfo targetDirInfo = Directory.CreateDirectory(Path.Combine(symbolsRoot, Path.GetFileNameWithoutExtension(package)));
Utilities.ExtractTarball(package, targetDirInfo.FullName, OutputHelper);
}
return symbolsRoot;
}
private IList<string> ValidateSymbols(string path, string sourcelinkToolPath)
{
Assert.True(Directory.Exists(path), $"Path, with symbol files to validate, does not exist: {path}");
var failedFiles = new ConcurrentBag<string>();
IEnumerable<string> allFiles = Directory.GetFiles(path, "*.pdb", SearchOption.AllDirectories);
Parallel.ForEach(allFiles, file =>
{
(Process Process, string StdOut, string StdErr) executeResult = ExecuteHelper.ExecuteProcess(
DotNetHelper.DotNetPath,
$"{sourcelinkToolPath} test --offline {file}",
OutputHelper,
logOutput: false,
excludeInfo: true, // Exclude info messages, as there can be 1,000+ processes
millisecondTimeout: 5000,
configureCallback: (process) => DotNetHelper.ConfigureProcess(process, null));
if (executeResult.Process.ExitCode != 0)
{
failedFiles.Add(file);
}
});
Assert.True(allFiles.Count() > 0, $"Did not find any symbols for sourcelink verification in {path}");
return failedFiles.ToList();
}
}

View file

@ -62,6 +62,19 @@ public static class Utilities
}
}
public static void ExtractNupkg(string package, string outputDir)
{
Directory.CreateDirectory(outputDir);
using ZipArchive zip = ZipFile.OpenRead(package);
foreach (ZipArchiveEntry entry in zip.Entries)
{
string outputPath = Path.Combine(outputDir, entry.FullName);
Directory.CreateDirectory(Path.GetDirectoryName(outputPath));
entry.ExtractToFile(outputPath);
}
}
public static async Task RetryAsync(Func<Task> executor, ITestOutputHelper outputHelper)
{
await Utilities.RetryAsync(
@ -122,4 +135,12 @@ public static class Utilities
throw new ArgumentException($"{variableName} is null, empty, or whitespace.");
}
}
public static string GetFile(string path, string pattern)
{
string[] files = Directory.GetFiles(path, pattern, SearchOption.AllDirectories);
Assert.False(files.Length > 1, $"Found multiple files matching the pattern {pattern}: {Environment.NewLine}{string.Join(Environment.NewLine, files)}");
Assert.False(files.Length == 0, $"Did not find any files matching the pattern {pattern}");
return files[0];
}
}

View file

@ -30,7 +30,7 @@ public class WebScenarioTests : SmokeTests
{
foreach (DotNetLanguage language in new[] { DotNetLanguage.CSharp, DotNetLanguage.FSharp })
{
yield return new(nameof(WebScenarioTests), language, DotNetTemplate.Web, DotNetActions.Build | DotNetActions.Run | DotNetActions.PublishComplex);
yield return new(nameof(WebScenarioTests), language, DotNetTemplate.Web, DotNetActions.Build | DotNetActions.Run | (DotNetHelper.ShouldPublishComplex() ? DotNetActions.None : DotNetActions.PublishComplex));
yield return new(nameof(WebScenarioTests), language, DotNetTemplate.Mvc, DotNetActions.Build | DotNetActions.Run | DotNetActions.Publish) { NoHttps = true };
yield return new(nameof(WebScenarioTests), language, DotNetTemplate.WebApi, DotNetActions.Build | DotNetActions.Run | DotNetActions.Publish);
}

View file

@ -32,6 +32,7 @@
./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.CodeAnalysis.*
./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.DiaSymReader.dll
./sdk/x.y.z/DotnetTools/dotnet-format/System.Composition.*
./sdk/x.y.z/DotnetTools/dotnet-format/System.IO.Pipelines.dll
./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Humanizer.dll
./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.Build.Locator.dll
./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.CodeAnalysis.AnalyzerUtilities.dll

View file

@ -45,6 +45,7 @@ sb,./sdk/x.y.z/Sdks/NuGet.Build.Tasks.Pack/*?
# missing workload manifests - https://github.com/dotnet/source-build/issues/3242
msft,./sdk-manifests/x.y.z/microsoft.net.sdk.android/*
msft,./sdk-manifests/x.y.z/microsoft.net.sdk.aspire/*
msft,./sdk-manifests/x.y.z/microsoft.net.sdk.ios/*
msft,./sdk-manifests/x.y.z/microsoft.net.sdk.maccatalyst/*
msft,./sdk-manifests/x.y.z/microsoft.net.sdk.macos/*
@ -58,6 +59,11 @@ sb,./packs/Microsoft.NETCore.App.Runtime.*/*
# netfx tooling - dumpminitool - https://github.com/dotnet/source-build/issues/3289
msft,./sdk/x.y.z/Extensions/dump/*
# https://github.com/dotnet/msbuild/issues/9213
msft,./sdk/x.y.z/**/System.Windows.Extensions.dll
msft,./sdk/x.y.z/**/System.Security.Permissions.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.Diagnostics.EventLog.dll
# netfx runtimes for dotnet-watch - https://github.com/dotnet/source-build/issues/3285
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.CodeAnalysis.Elfie.dll
msft,./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.Win32.SystemEvents.dll
@ -83,12 +89,10 @@ msft,./sdk/x.y.z/FSharp/Microsoft.VisualStudio.Setup.Configuration.Interop.dll
msft,./sdk/x.y.z/FSharp/runtimes/win/lib/netx.y/Microsoft.Win32.SystemEvents.dll
msft,./sdk/x.y.z/FSharp/runtimes/win/lib/netx.y/System.Drawing.Common.dll
msft,./sdk/x.y.z/FSharp/runtimes/win/lib/netx.y/System.Security.Cryptography.ProtectedData.dll
msft,./sdk/x.y.z/FSharp/runtimes/win/lib/netx.y/System.Windows.Extensions.dll
# windows components - https://github.com/dotnet/source-build/issues/3526
msft,./sdk/x.y.z/runtimes/win/lib/netx.y/Microsoft.Win32.SystemEvents.dll
msft,./sdk/x.y.z/runtimes/win/lib/netx.y/System.Drawing.Common.dll
msft,./sdk/x.y.z/runtimes/win/lib/netx.y/System.Windows.Extensions.dll
# runtime components in roslyn layout - https://github.com/dotnet/source-build/issues/3286
# Expected - build is filtering components present in target platform.

View file

@ -116,7 +116,6 @@ index ------------
-./sdk/x.y.z/Containers/containerize/Microsoft.NET.Build.Containers.dll
-./sdk/x.y.z/Containers/containerize/Microsoft.NET.StringTools.dll
-./sdk/x.y.z/Containers/containerize/Microsoft.VisualStudio.Setup.Configuration.Interop.dll
-./sdk/x.y.z/Containers/containerize/Microsoft.Win32.SystemEvents.dll
-./sdk/x.y.z/Containers/containerize/MSBuild.dll
-./sdk/x.y.z/Containers/containerize/Newtonsoft.Json.dll
-./sdk/x.y.z/Containers/containerize/NuGet.Common.dll
@ -145,22 +144,15 @@ index ------------
-./sdk/x.y.z/Containers/containerize/runtimes/win/
-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/
-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/
-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/Microsoft.Win32.SystemEvents.dll
-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll
-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll
-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/System.Drawing.Common.dll
-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll
-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/System.Security.Cryptography.ProtectedData.dll
-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/System.Windows.Extensions.dll
-./sdk/x.y.z/Containers/containerize/System.CommandLine.dll
-./sdk/x.y.z/Containers/containerize/System.Configuration.ConfigurationManager.dll
-./sdk/x.y.z/Containers/containerize/System.Diagnostics.EventLog.dll
-./sdk/x.y.z/Containers/containerize/System.Drawing.Common.dll
-./sdk/x.y.z/Containers/containerize/System.Reflection.MetadataLoadContext.dll
-./sdk/x.y.z/Containers/containerize/System.Security.Cryptography.Pkcs.dll
-./sdk/x.y.z/Containers/containerize/System.Security.Cryptography.ProtectedData.dll
-./sdk/x.y.z/Containers/containerize/System.Security.Permissions.dll
-./sdk/x.y.z/Containers/containerize/System.Windows.Extensions.dll
-./sdk/x.y.z/Containers/containerize/tr/
-./sdk/x.y.z/Containers/containerize/tr/Microsoft.DotNet.Cli.Utils.resources.dll
-./sdk/x.y.z/Containers/containerize/tr/Microsoft.NET.Build.Containers.resources.dll
@ -256,7 +248,6 @@ index ------------
-./sdk/x.y.z/Containers/tasks/net472/System.Reflection.MetadataLoadContext.dll
-./sdk/x.y.z/Containers/tasks/net472/System.Runtime.CompilerServices.Unsafe.dll
-./sdk/x.y.z/Containers/tasks/net472/System.Security.AccessControl.dll
-./sdk/x.y.z/Containers/tasks/net472/System.Security.Permissions.dll
-./sdk/x.y.z/Containers/tasks/net472/System.Security.Principal.Windows.dll
-./sdk/x.y.z/Containers/tasks/net472/System.Text.Encodings.Web.dll
-./sdk/x.y.z/Containers/tasks/net472/System.Text.Json.dll
@ -284,23 +275,9 @@ index ------------
./sdk/x.y.z/Containers/tasks/netx.y/Microsoft.NET.Build.Containers.dll
./sdk/x.y.z/Containers/tasks/netx.y/Microsoft.NET.StringTools.dll
-./sdk/x.y.z/Containers/tasks/netx.y/Microsoft.VisualStudio.Setup.Configuration.Interop.dll
./sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Win32.SystemEvents.dll
./sdk/x.y.z/Containers/tasks/netx.y/MSBuild.dll
./sdk/x.y.z/Containers/tasks/netx.y/Newtonsoft.Json.dll
@@ ------------ @@
./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/
./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/
./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/
-./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/Microsoft.Win32.SystemEvents.dll
./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll
./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll
-./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Drawing.Common.dll
./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll
-./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Security.Cryptography.ProtectedData.dll
-./sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Windows.Extensions.dll
./sdk/x.y.z/Containers/tasks/netx.y/System.CommandLine.dll
./sdk/x.y.z/Containers/tasks/netx.y/System.Configuration.ConfigurationManager.dll
./sdk/x.y.z/Containers/tasks/netx.y/System.Diagnostics.EventLog.dll
./sdk/x.y.z/Containers/tasks/netx.y/NuGet.Common.dll
@@ ------------ @@
./sdk/x.y.z/Microsoft.Build.NuGetSdkResolver.dll
./sdk/x.y.z/Microsoft.Build.Tasks.Core.dll
@ -317,14 +294,6 @@ index ------------
./sdk/x.y.z/Microsoft.VisualStudio.TestPlatform.Client.dll
./sdk/x.y.z/Microsoft.VisualStudio.TestPlatform.Common.dll
./sdk/x.y.z/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
@@ ------------ @@
./sdk/x.y.z/runtimes/win/
./sdk/x.y.z/runtimes/win/lib/
./sdk/x.y.z/runtimes/win/lib/netx.y/
-./sdk/x.y.z/runtimes/win/lib/netx.y/
./sdk/x.y.z/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll
./sdk/x.y.z/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll
./sdk/x.y.z/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll
@@ ------------ @@
./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/
./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/netx.y/

View file

@ -41,10 +41,11 @@
"**/*.dll",
"**/*.Dll",
"**/*.exe",
"**/*.pdb",
"**/*.mdb",
"**/*.zip",
"**/*.nupkg"
"**/*.nupkg",
"**/*.pdb",
"**/*.tgz",
"**/*.zip"
]
},
@ -176,7 +177,11 @@
},
{
"name": "vstest",
"defaultRemote": "https://github.com/microsoft/vstest"
"defaultRemote": "https://github.com/microsoft/vstest",
"exclude": [
// Non-OSS license used in VS specific build configurations.
"src/package/licenses/LICENSE_VS.txt"
]
},
{
"name": "xdt",

View file

@ -4,6 +4,7 @@
</PropertyGroup>
<ItemGroup>
<BundledManifests Include="Microsoft.NET.Sdk.Android" FeatureBand="$(MauiFeatureBand)" Version="$(XamarinAndroidWorkloadManifestVersion)" Condition="'$(DotNetBuildFromSource)' != 'true'" />
<BundledManifests Include="Microsoft.NET.Sdk.Aspire" FeatureBand="$(AspireFeatureBand)" Version="$(AspireWorkloadManifestVersion)" Condition="'$(DotNetBuildFromSource)' != 'true'" />
<BundledManifests Include="Microsoft.NET.Sdk.iOS" FeatureBand="$(MauiFeatureBand)" Version="$(XamarinIOSWorkloadManifestVersion)" Condition="'$(DotNetBuildFromSource)' != 'true'" />
<BundledManifests Include="Microsoft.NET.Sdk.MacCatalyst" FeatureBand="$(MauiFeatureBand)" Version="$(XamarinMacCatalystWorkloadManifestVersion)" Condition="'$(DotNetBuildFromSource)' != 'true'" />
<BundledManifests Include="Microsoft.NET.Sdk.macOS" FeatureBand="$(MauiFeatureBand)" Version="$(XamarinMacOSWorkloadManifestVersion)" Condition="'$(DotNetBuildFromSource)' != 'true'" />

View file

@ -156,7 +156,8 @@
<!-- Copy ASP.NET runtime and targeting pack to internal layout, as we don't currently chain that in with a pkg dependency -->
<ExtractArchiveToDirectory SourceArchive="$(DownloadsFolder)$(AspNetCoreSharedFxArchiveFileName)"
DestinationDirectory="$(SdkInternalLayoutPath)" />
DestinationDirectory="$(SdkInternalLayoutPath)"
DirectoriesToCopy="shared/Microsoft.AspNetCore.App" />
<ExtractArchiveToDirectory SourceArchive="$(DownloadsFolder)$(AspNetTargetingPackArchiveFileName)"
DestinationDirectory="$(SdkInternalLayoutPath)" />

View file

@ -97,8 +97,8 @@ namespace EndToEnd.Tests
}
[WindowsOnlyTheory]
[InlineData("net6.0", true)]
[InlineData("net6.0", false)]
// [InlineData("net6.0", true)]
// [InlineData("net6.0", false)]
[InlineData("current", true)]
[InlineData("current", false)]
public void ItCanPublishArm64Winforms(string TargetFramework, bool selfContained)
@ -136,8 +136,8 @@ namespace EndToEnd.Tests
}
[WindowsOnlyTheory]
[InlineData("net6.0", true)]
[InlineData("net6.0", false)]
// [InlineData("net6.0", true)]
// [InlineData("net6.0", false)]
[InlineData("current", true)]
[InlineData("current", false)]
public void ItCanPublishArm64Wpf(string TargetFramework, bool selfContained)

View file

@ -61,6 +61,190 @@
Skip="true"
Issue=""
Reason="Test doesn't work with newer RIDs"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_keeps_symbols_by_default"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_links_simple_app_without_analysis_warnings_and_it_runs"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_does_not_include_leftover_artifacts_on_second_run"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_respects_warning_level_independently"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_runs_incrementally"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_symbols_option_can_override_defaults_from_debugger_support"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_removes_symbols_when_debugger_support_is_disabled"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_displays_informational_warning"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.PrepareForILLink_can_set_IsTrimmable"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_accepts_option_to_remove_symbols"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_defaults_keep_nonframework"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_accepts_root_descriptor"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_respects_global_TrimMode"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_only_runs_when_switch_is_enabled"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_error_on_nonboolean_optimization_flag"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToPublishASingleFileApp.It_generates_a_single_file_including_pdbs"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.PrepareForILLink_can_set_TrimMode"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_accepts_option_to_enable_analysis_warnings"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_error_on_portable_app"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_can_treat_warnings_not_as_errors"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.TrimmingOptions_are_defaulted_correctly_on_trimmed_apps"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_errors_fail_the_build"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_can_treat_warnings_as_errors"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_roots_IntermediateAssembly"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_can_treat_warnings_as_errors_independently"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_accepts_option_to_disable_analysis_warnings"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_can_ignore_warnings"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_respects_analysis_level"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_accepts_option_to_enable_analysis_warnings_without_PublishTrimmed"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_displays_informational_warning_when_trim_analysis_warnings_are_suppressed_on_net6plus"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_old_defaults_keep_nonframework"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_dont_display_time_awareness_message_on_incremental_build"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_IsTrimmable_metadata_can_override_attribute"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_respects_IsTrimmable_attribute"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_displays_informational_warning_up_to_net5_by_default"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_dont_display_informational_warning_by_default_on_net6plus"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_analysis_warnings_are_enabled_by_default"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_TrimMode_applies_to_IsTrimmable_assemblies"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Build.Tests.AppHostTests.It_builds_a_runnable_apphost_by_default"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToPublishASingleFileApp.It_can_include_ni_pdbs_in_single_file"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Build.Tests.GivenWeWantToRequireWindowsForDesktopApps.WindowsFormsAppCanBuildOnNonWindows"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_verify_analysis_warnings_framework_assemblies"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_verify_analysis_warnings_hello_world_app_trim_mode_link"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_verify_analysis_warnings_hello_world_app_trim_mode_copyused"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToPublishASingleFileApp.It_generates_publishing_single_file_with_win7"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_net7_defaults_trim_nonframework"
Skip="true"
Issue=""
Reason="Cannot run with non-existent LastRuntimeFrameworkVersion"/>
<Method Name="Microsoft.NET.Publish.Tests.GivenThatWeWantToRunILLink.ILLink_can_use_latest_with_unsupported_target_framework"
Skip="true"
Issue=""