Skip to content

Commit

Permalink
Merge branch 'master' into jorobich/update-readme
Browse files Browse the repository at this point in the history
  • Loading branch information
JoeRobich committed Dec 19, 2023
2 parents 77c4e43 + 2fe3738 commit a2546c7
Show file tree
Hide file tree
Showing 43 changed files with 178 additions and 513 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

name: 'Build'
env:
DotNetVersion: "8.0.100-rc.1.23463.5"
DotNetVersion2: "7.0.302"
DotNetVersion3: "6.0.203"
DotNetVersion: "8.0.100"
DotNetVersion2: "7.0.404"
DotNetVersion3: "6.0.203" # This is the last version Mono supports. It is used for our Mono CI tests.
NuGetVersion: "6.5.0"
MonoVersion: "6.12.0"
Artifacts: ${{ github.workspace }}/artifacts/
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/tests-net6.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

name: 'Tests net6.0'
env:
DotNetVersion: "8.0.100-rc.1.23463.5"
DotNetVersion2: "7.0.302"
DotNetVersion3: "6.0.203"
DotNetVersion: "8.0.100"
DotNetVersion2: "7.0.404"
DotNetVersion3: "6.0.203" # This is the last version Mono supports. It is used for our Mono CI tests.
NuGetVersion: "6.5.0"
MonoVersion: "6.12.0"
Artifacts: ${{ github.workspace }}/artifacts/
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

name: 'Tests'
env:
DotNetVersion: "8.0.100-rc.1.23463.5"
DotNetVersion2: "7.0.302"
DotNetVersion3: "6.0.203"
DotNetVersion: "8.0.100"
DotNetVersion2: "7.0.404"
DotNetVersion3: "6.0.203" # This is the last version Mono supports. It is used for our Mono CI tests.
NuGetVersion: "6.5.0"
MonoVersion: "6.12.0"
Artifacts: ${{ github.workspace }}/artifacts/
Expand Down
6 changes: 3 additions & 3 deletions .pipelines/init.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
parameters:
# Configuration: Release
Verbosity: Normal
DotNetVersion: "8.0.100-rc.1.23463.5"
DotNetVersion2: "7.0.302"
DotNetVersion3: "6.0.203"
DotNetVersion: "8.0.100"
DotNetVersion2: "7.0.404"
DotNetVersion3: "6.0.203" # This is the last version Mono supports. It is used for our Mono CI tests.
CakeVersion: "1.1.0"
NuGetVersion: "5.7.0"
MonoVersion: ''
Expand Down
51 changes: 24 additions & 27 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,28 @@
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>

<OmniSharpExtensionsPackageVersion>0.19.9</OmniSharpExtensionsPackageVersion>
<MicrosoftExtensionPackageVersion>7.0.0</MicrosoftExtensionPackageVersion>
<MicrosoftTestPackageVersion>17.6.0</MicrosoftTestPackageVersion>
<MicrosoftExtensionPackageVersion>8.0.0</MicrosoftExtensionPackageVersion>
<MicrosoftTestPackageVersion>17.8.0</MicrosoftTestPackageVersion>
<MSBuildPackageVersion>17.3.2</MSBuildPackageVersion>
<NuGetPackageVersion>6.8.0-preview.1.69</NuGetPackageVersion>
<RoslynPackageVersion>4.9.0-1.23504.3</RoslynPackageVersion>
<XunitPackageVersion>2.4.1</XunitPackageVersion>
<NuGetPackageVersion>6.8.0-rc.122</NuGetPackageVersion>
<RoslynPackageVersion>4.9.0-3.23611.3</RoslynPackageVersion>
<XunitPackageVersion>2.6.1</XunitPackageVersion>
</PropertyGroup>

<ItemGroup>
<PackageVersion Include="BenchmarkDotNet" Version="0.12.1" />
<PackageVersion Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.12.1" />
<PackageVersion Include="BenchmarkDotNet" Version="0.13.10" />
<PackageVersion Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.13.10" />

<PackageVersion Include="Cake.Scripting.Transport" Version="0.9.0" />
<PackageVersion Include="Cake.Scripting.Transport" Version="0.15.0" />

<PackageVersion Include="DiffPlex" Version="1.7.1" />

<PackageVersion Include="Dotnet.Script.DependencyModel" Version="1.4.0" />
<PackageVersion Include="Dotnet.Script.DependencyModel.NuGet" Version="1.4.0" />
<PackageVersion Include="Dotnet.Script.DependencyModel" Version="1.5.0" />
<PackageVersion Include="Dotnet.Script.DependencyModel.NuGet" Version="1.5.0" />

<PackageVersion Include="ICSharpCode.Decompiler" Version="7.2.1.6856" />
<PackageVersion Include="ICSharpCode.Decompiler" Version="8.2.0.7535" />

<PackageVersion Include="McMaster.Extensions.CommandLineUtils" Version="3.1.0" />
<PackageVersion Include="McMaster.Extensions.CommandLineUtils" Version="4.1.0" />

<PackageVersion Include="Microsoft.Build" Version="$(MSBuildPackageVersion)" />
<PackageVersion Include="Microsoft.Build.Framework" Version="$(MSBuildPackageVersion)" />
Expand All @@ -39,6 +39,7 @@
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="$(RoslynPackageVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="$(RoslynPackageVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(RoslynPackageVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.ExternalAccess.AspNetCore" Version="$(RoslynPackageVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.ExternalAccess.OmniSharp" Version="$(RoslynPackageVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.ExternalAccess.OmniSharp.CSharp" Version="$(RoslynPackageVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.ExternalAccess.RazorCompiler" Version="$(RoslynPackageVersion)" />
Expand All @@ -58,15 +59,12 @@
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(MicrosoftExtensionPackageVersion)" />

<PackageVersion Include="Microsoft.Build.Locator" Version="1.4.1" />
<PackageVersion Include="Microsoft.Build.Locator" Version="1.6.10" />

<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftTestPackageVersion)" />
<PackageVersion Include="Microsoft.TestPlatform.TranslationLayer" Version="$(MicrosoftTestPackageVersion)" />
<PackageVersion Include="Microsoft.TestPlatform.ObjectModel" Version="$(MicrosoftTestPackageVersion)" />

<PackageVersion Include="Microsoft.VisualStudio.Setup.Configuration.Interop" Version="1.14.114" />
<PackageVersion Include="Microsoft.VisualStudio.SDK.EmbedInteropTypes" Version="15.0.12" />

<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />

<PackageVersion Include="NuGet.Common" Version="$(NuGetPackageVersion)" />
Expand All @@ -85,26 +83,25 @@
<PackageVersion Include="OmniSharp.Extensions.JsonRpc" Version="$(OmniSharpExtensionsPackageVersion)" />

<PackageVersion Include="SQLitePCLRaw.bundle_green" Version="2.1.0" />
<PackageVersion Include="System.Collections.Immutable" Version="7.0.0" />
<PackageVersion Include="System.ComponentModel.Composition" Version="7.0.0" />
<PackageVersion Include="System.Composition" Version="7.0.0" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="7.0.0" />

<PackageVersion Include="System.Collections.Immutable" Version="8.0.0" />
<PackageVersion Include="System.ComponentModel.Composition" Version="8.0.0" />
<PackageVersion Include="System.Composition" Version="8.0.0" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
<PackageVersion Include="System.Memory" Version="4.5.5" />
<PackageVersion Include="System.Reflection.Metadata" Version="7.0.0" />
<PackageVersion Include="System.Threading.Tasks.Dataflow" Version="7.0.0" />
<PackageVersion Include="System.Reflection.Metadata" Version="8.0.0" />
<PackageVersion Include="System.Text.Json" Version="8.0.0" />
<PackageVersion Include="System.Threading.Tasks.Dataflow" Version="8.0.0" />
<PackageVersion Include="System.ValueTuple" Version="4.5.0" />

<PackageVersion Include="System.Reactive" Version="6.0.0" />

<PackageVersion Include="System.Reflection.DispatchProxy" Version="4.5.1" />
<PackageVersion Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />

<PackageVersion Include="xunit.abstractions" Version="2.0.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.4.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.4" />
<PackageVersion Include="xunit" Version="$(XunitPackageVersion)" />
</ItemGroup>
<ItemGroup>
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net472'">
<PackageVersion Include="Microsoft.AspNetCore.Diagnostics" Version="2.2.0" />
Expand Down
1 change: 1 addition & 0 deletions NuGet.Config
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
<package pattern="Cake.*" />
<package pattern="DiffPlex" />
<package pattern="Dotnet.Script.*" />
<package pattern="Gee.External.Capstone" />
<package pattern="Humanizer.Core" />
<package pattern="ICSharpCode.Decompiler" />
<package pattern="McMaster.Extensions.CommandLineUtils" />
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ resources:

variables:
Verbosity: Diagnostic
DotNetVersion: "8.0.100-rc.1.23463.5"
DotNetVersion: "8.0.100"
CakeVersion: "3.0.0"
NuGetVersion: "6.5.0"
GitVersionVersion: "5.0.1"
Expand Down
116 changes: 68 additions & 48 deletions build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,10 @@ Task("Cleanup")
Task("GitVersion")
.WithCriteria(!BuildSystem.IsLocalBuild)
.WithCriteria(!AzurePipelines.IsRunningOnAzurePipelines)
.Does(() => {
GitVersion(new GitVersionSettings{
.Does(() =>
{
GitVersion(new GitVersionSettings
{
OutputType = GitVersionOutput.BuildServer
});
});
Expand Down Expand Up @@ -153,16 +155,20 @@ Task("PrepareTestAssets:CommonTestAssets")
var folder = CombinePaths(env.Folders.TestAssets, "test-projects", project);
try {
try
{
DotNetBuild(folder, new DotNetBuildSettings()
{
ToolPath = env.DotNetCommand,
WorkingDirectory = folder,
Verbosity = DotNetVerbosity.Minimal
});
} catch {
}
catch
{
// ExternalAlias has issues once in a while, try building again to get it working.
if (project == "ExternAlias") {
if (project == "ExternAlias")
{
DotNetBuild(folder, new DotNetBuildSettings()
{
Expand Down Expand Up @@ -216,7 +222,8 @@ Task("PrepareTestAssets:CakeTestAssets")
var toolsFolder = CombinePaths(env.Folders.TestAssets, "test-projects", project, "tools");
var packagesConfig = CombinePaths(toolsFolder, "packages.config");
NuGetInstallFromConfig(packagesConfig, new NuGetInstallSettings {
NuGetInstallFromConfig(packagesConfig, new NuGetInstallSettings
{
OutputDirectory = toolsFolder,
Prerelease = true,
Verbosity = NuGetVerbosity.Quiet,
Expand Down Expand Up @@ -248,7 +255,8 @@ void BuildWithDotNetCli(BuildEnvironment env, string configuration)
};

settings.AddFileLogger(
new MSBuildFileLoggerSettings {
new MSBuildFileLoggerSettings
{
AppendToLogFile = false,
LogFile = logFileNameBase + ".log",
ShowTimestamp = true,
Expand Down Expand Up @@ -294,51 +302,51 @@ Task("Test")
.IsDependentOn("PrepareTestAssets")
.Does(() =>
{
var testTargetFramework = useDotNetTest ? "net7.0" : "net472";
var testProjects = string.IsNullOrEmpty(testProjectArgument) ? buildPlan.TestProjects : testProjectArgument.Split(',');
foreach (var testProject in testProjects)
var testTargetFramework = useDotNetTest ? "net7.0" : "net472";
var testProjects = string.IsNullOrEmpty(testProjectArgument) ? buildPlan.TestProjects : testProjectArgument.Split(',');
foreach (var testProject in testProjects)
{
PrintBlankLine();
var instanceFolder = CombinePaths(env.Folders.Bin, configuration, testProject, testTargetFramework);
var targetPath = CombinePaths(instanceFolder, $"{testProject}.dll");
if (useDotNetTest)
{
PrintBlankLine();
var instanceFolder = CombinePaths(env.Folders.Bin, configuration, testProject, testTargetFramework);
var targetPath = CombinePaths(instanceFolder, $"{testProject}.dll");
var logFile = CombinePaths(env.Folders.ArtifactsLogs, $"{testProject}-netsdk-result.xml");
var arguments = $"test \"{targetPath}\" --logger \"console;verbosity=normal\" --logger \"trx;LogFileName={logFile}\" --blame-hang-timeout 60sec";
if (useDotNetTest)
{
var logFile = CombinePaths(env.Folders.ArtifactsLogs, $"{testProject}-netsdk-result.xml");
var arguments = $"test \"{targetPath}\" --logger \"console;verbosity=normal\" --logger \"trx;LogFileName={logFile}\" --blame-hang-timeout 60sec";
Console.WriteLine($"Executing: dotnet {arguments}");
Console.WriteLine($"Executing: dotnet {arguments}");
Run("dotnet", arguments, instanceFolder)
.ExceptionOnError($"Test {testProject} failed for {testTargetFramework}");
}
else
{
var logFile = CombinePaths(env.Folders.ArtifactsLogs, $"{testProject}-desktop-result.xml");
// Copy xunit executable to test folder to solve path errors
var xunitToolsFolder = CombinePaths(env.Folders.Tools, "xunit.runner.console", "tools", "net452");
var xunitInstancePath = CombinePaths(instanceFolder, "xunit.console.exe");
FileHelper.Copy(CombinePaths(xunitToolsFolder, "xunit.console.exe"), xunitInstancePath, overwrite: true);
FileHelper.Copy(CombinePaths(xunitToolsFolder, "xunit.runner.utility.net452.dll"), CombinePaths(instanceFolder, "xunit.runner.utility.net452.dll"), overwrite: true);
var arguments = $"\"{targetPath}\" -noshadow -parallel none -xml \"{logFile}\" -notrait category=failing";
Run("dotnet", arguments, instanceFolder)
if (Platform.Current.IsWindows)
{
Run(xunitInstancePath, arguments, instanceFolder)
.ExceptionOnError($"Test {testProject} failed for {testTargetFramework}");
}
else
{
var logFile = CombinePaths(env.Folders.ArtifactsLogs, $"{testProject}-desktop-result.xml");
// Copy the Mono-built Microsoft.Build.* binaries to the test folder.
// This is necessary to work around a Mono bug that is exasperated by xUnit.
CopyMonoMSBuildBinaries(instanceFolder);
// Copy xunit executable to test folder to solve path errors
var xunitToolsFolder = CombinePaths(env.Folders.Tools, "xunit.runner.console", "tools", "net452");
var xunitInstancePath = CombinePaths(instanceFolder, "xunit.console.exe");
FileHelper.Copy(CombinePaths(xunitToolsFolder, "xunit.console.exe"), xunitInstancePath, overwrite: true);
FileHelper.Copy(CombinePaths(xunitToolsFolder, "xunit.runner.utility.net452.dll"), CombinePaths(instanceFolder, "xunit.runner.utility.net452.dll"), overwrite: true);
var arguments = $"\"{targetPath}\" -noshadow -parallel none -xml \"{logFile}\" -notrait category=failing";
if (Platform.Current.IsWindows)
{
Run(xunitInstancePath, arguments, instanceFolder)
.ExceptionOnError($"Test {testProject} failed for {testTargetFramework}");
}
else
{
// Copy the Mono-built Microsoft.Build.* binaries to the test folder.
// This is necessary to work around a Mono bug that is exasperated by xUnit.
CopyMonoMSBuildBinaries(instanceFolder);
Run("mono", $"\"{xunitInstancePath}\" {arguments}", instanceFolder)
.ExceptionOnError($"Test {testProject} failed for net472");
}
Run("mono", $"\"{xunitInstancePath}\" {arguments}", instanceFolder)
.ExceptionOnError($"Test {testProject} failed for net472");
}
}
}
});

void CopyMonoMSBuildBinaries(string outputFolder)
Expand Down Expand Up @@ -370,7 +378,7 @@ void CopyExtraDependencies(BuildEnvironment env, string outputFolder)
FileHelper.Copy(CombinePaths(env.WorkingDirectory, "license.md"), CombinePaths(outputFolder, "license.md"), overwrite: true);
}

void AddOmniSharpBindingRedirects(string omnisharpFolder)
void UpdateBindingRedirects(string omnisharpFolder)
{
var appConfig = CombinePaths(omnisharpFolder, "OmniSharp.exe.config");
if (!FileHelper.Exists(appConfig))
Expand All @@ -397,6 +405,17 @@ void AddOmniSharpBindingRedirects(string omnisharpFolder)
assemblyBinding.AppendChild(redirect);
}

// Find Roslyn libraries
foreach (var filePath in System.IO.Directory.GetFiles(omnisharpFolder, "Microsoft.CodeAnalysis.*.dll"))
{
// Read assembly name from Roslyn library
var assemblyName = AssemblyName.GetAssemblyName(filePath);

// Create binding redirect and add to bindings
var redirect = CreateBindingRedirect(document, assemblyName);
assemblyBinding.AppendChild(redirect);
}

runtime.AppendChild(assemblyBinding);

// Save updated app.config
Expand Down Expand Up @@ -433,7 +452,7 @@ string PublishMonoBuild(string project, BuildEnvironment env, BuildPlan plan, st
DirectoryHelper.Copy(buildFolder, outputFolder, copySubDirectories: false);

CopyExtraDependencies(env, outputFolder);
AddOmniSharpBindingRedirects(outputFolder);
UpdateBindingRedirects(outputFolder);

// Copy dependencies of Mono build
FileHelper.Copy(
Expand Down Expand Up @@ -470,7 +489,7 @@ string PublishMonoBuildForPlatform(string project, MonoRuntime monoRuntime, Buil
Run("chmod", $"+x \"{CombinePaths(outputFolder, "run")}\"");

CopyExtraDependencies(env, outputFolder);
AddOmniSharpBindingRedirects(omnisharpFolder);
UpdateBindingRedirects(omnisharpFolder);

Package(project, monoRuntime.PlatformName, outputFolder, env.Folders.ArtifactsPackage, env.Folders.DeploymentPackage);

Expand Down Expand Up @@ -555,7 +574,6 @@ Task("PublishNet6Builds")
PublishBuild(project, env, buildPlan, configuration, "linux-musl-arm64", "net6.0");
}
}
}
});

Expand Down Expand Up @@ -597,7 +615,7 @@ string PublishBuild(string project, BuildEnvironment env, BuildPlan plan, string
}

CopyExtraDependencies(env, outputFolder);
AddOmniSharpBindingRedirects(outputFolder);
UpdateBindingRedirects(outputFolder);

var platformFolder = framework != "net472" ? $"{rid}-{framework}" : rid;
Package(project, platformFolder, outputFolder, env.Folders.ArtifactsPackage, env.Folders.DeploymentPackage);
Expand Down Expand Up @@ -645,8 +663,10 @@ Task("PublishWindowsBuilds")

Task("PublishNuGet")
.IsDependentOn("InstallDotNetSdk")
.Does(() => {
DotNetPack(".", new DotNetPackSettings() {
.Does(() =>
{
DotNetPack(".", new DotNetPackSettings()
{
Configuration = "Release",
OutputDirectory = "./artifacts/nuget/",
MSBuildSettings = new DotNetMSBuildSettings()
Expand Down
Loading

0 comments on commit a2546c7

Please sign in to comment.