Skip to content

Commit

Permalink
Add API to get OS specific references
Browse files Browse the repository at this point in the history
  • Loading branch information
jmarolf committed Aug 31, 2021
1 parent e5420e2 commit 1ed8954
Show file tree
Hide file tree
Showing 3 changed files with 270 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,12 @@ static Microsoft.CodeAnalysis.Testing.IVerifierExtensions.EqualOrDiff(this Micro
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Default.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net50.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net60.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net60Android.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net60MacCatalyst.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net60MacOS.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net60TvOS.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net60Windows.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net60iOS.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.NetCore.NetCoreApp10.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.NetCore.NetCoreApp11.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
static Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.NetCore.NetCoreApp20.get -> Microsoft.CodeAnalysis.Testing.ReferenceAssemblies
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -878,13 +878,145 @@ public static class Net
"net6.0",
new PackageIdentity(
"Microsoft.NETCore.App.Ref",
"6.0.0-preview.6.21352.12"),
"6.0.0-preview.7.21377.19"),
Path.Combine("ref", "net6.0"));
});

private static readonly Lazy<ReferenceAssemblies> _lazyNet60Windows =
new Lazy<ReferenceAssemblies>(() =>
{
if (!NuGetFramework.Parse("net6.0").IsPackageBased)
{
// The NuGet version provided at runtime does not recognize the 'net6.0' target framework
throw new NotSupportedException("The 'net6.0' target framework is not supported by this version of NuGet.");
}

return new ReferenceAssemblies(
"net6.0",
new PackageIdentity(
"Microsoft.NETCore.App.Ref",
"6.0.0-preview.7.21377.19"),
Path.Combine("ref", "net6.0"))
.AddPackages(
ImmutableArray.Create(
new PackageIdentity("Microsoft.WindowsDesktop.App.Ref", "6.0.0-preview.7.21378.9")));
});

private static readonly Lazy<ReferenceAssemblies> _lazyNet60Android =
new Lazy<ReferenceAssemblies>(() =>
{
if (!NuGetFramework.Parse("net6.0").IsPackageBased)
{
// The NuGet version provided at runtime does not recognize the 'net6.0' target framework
throw new NotSupportedException("The 'net6.0' target framework is not supported by this version of NuGet.");
}

return new ReferenceAssemblies(
"net6.0",
new PackageIdentity(
"Microsoft.NETCore.App.Ref",
"6.0.0-preview.7.21377.19"),
Path.Combine("ref", "net6.0"))
.AddPackages(
ImmutableArray.Create(
new PackageIdentity("Microsoft.Android.Ref", "30.0.100-preview.7.110")));
});

private static readonly Lazy<ReferenceAssemblies> _lazyNet60iOS =
new Lazy<ReferenceAssemblies>(() =>
{
if (!NuGetFramework.Parse("net6.0").IsPackageBased)
{
// The NuGet version provided at runtime does not recognize the 'net6.0' target framework
throw new NotSupportedException("The 'net6.0' target framework is not supported by this version of NuGet.");
}

return new ReferenceAssemblies(
"net6.0",
new PackageIdentity(
"Microsoft.NETCore.App.Ref",
"6.0.0-preview.7.21377.19"),
Path.Combine("ref", "net6.0"))
.AddPackages(
ImmutableArray.Create(
new PackageIdentity("Microsoft.iOS.Ref", "15.0.100-preview.7.230")));
});

private static readonly Lazy<ReferenceAssemblies> _lazyNet60MacOS =
new Lazy<ReferenceAssemblies>(() =>
{
if (!NuGetFramework.Parse("net6.0").IsPackageBased)
{
// The NuGet version provided at runtime does not recognize the 'net6.0' target framework
throw new NotSupportedException("The 'net6.0' target framework is not supported by this version of NuGet.");
}

return new ReferenceAssemblies(
"net6.0",
new PackageIdentity(
"Microsoft.NETCore.App.Ref",
"6.0.0-preview.7.21377.19"),
Path.Combine("ref", "net6.0"))
.AddPackages(
ImmutableArray.Create(
new PackageIdentity("Microsoft.macOS.Ref", "12.0.100-preview.7.230")));
});

private static readonly Lazy<ReferenceAssemblies> _lazyNet60MacCatalyst =
new Lazy<ReferenceAssemblies>(() =>
{
if (!NuGetFramework.Parse("net6.0").IsPackageBased)
{
// The NuGet version provided at runtime does not recognize the 'net6.0' target framework
throw new NotSupportedException("The 'net6.0' target framework is not supported by this version of NuGet.");
}

return new ReferenceAssemblies(
"net6.0",
new PackageIdentity(
"Microsoft.NETCore.App.Ref",
"6.0.0-preview.7.21377.19"),
Path.Combine("ref", "net6.0"))
.AddPackages(
ImmutableArray.Create(
new PackageIdentity("Microsoft.MacCatalyst.Ref", "15.0.100-preview.7.230")));
});

private static readonly Lazy<ReferenceAssemblies> _lazyNet60TvOS =
new Lazy<ReferenceAssemblies>(() =>
{
if (!NuGetFramework.Parse("net6.0").IsPackageBased)
{
// The NuGet version provided at runtime does not recognize the 'net6.0' target framework
throw new NotSupportedException("The 'net6.0' target framework is not supported by this version of NuGet.");
}

return new ReferenceAssemblies(
"net6.0",
new PackageIdentity(
"Microsoft.NETCore.App.Ref",
"6.0.0-preview.7.21377.19"),
Path.Combine("ref", "net6.0"))
.AddPackages(
ImmutableArray.Create(
new PackageIdentity("Microsoft.tvOS.Ref", "15.0.100-preview.7.230")));
});

public static ReferenceAssemblies Net50 => _lazyNet50.Value;

public static ReferenceAssemblies Net60 => _lazyNet60.Value;

public static ReferenceAssemblies Net60Windows => _lazyNet60Windows.Value;

public static ReferenceAssemblies Net60Android => _lazyNet60Android.Value;

public static ReferenceAssemblies Net60iOS => _lazyNet60iOS.Value;

public static ReferenceAssemblies Net60MacOS => _lazyNet60MacOS.Value;

public static ReferenceAssemblies Net60MacCatalyst => _lazyNet60MacCatalyst.Value;

public static ReferenceAssemblies Net60TvOS => _lazyNet60TvOS.Value;
}

public static class NetStandard
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,125 @@ public async Task ResolveReferenceAssemblies_Net50()
#endif
}

[Fact]
public async Task ResolveReferenceAssemblies_Net60Windows()
{
#if NETCOREAPP1_1 || NET46
Assert.False(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
Assert.ThrowsAny<NotSupportedException>(() => ReferenceAssemblies.Net.Net60Windows);

// Avoid a warning for 'async' operator
await Task.Yield();
#else
Assert.True(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
var referenceAssemblies = ReferenceAssemblies.Net.Net60Windows;
var resolved = await referenceAssemblies.ResolveAsync(LanguageNames.CSharp, CancellationToken.None);
Assert.NotEmpty(resolved);
#endif
}

[Fact]
public async Task ResolveReferenceAssemblies_Net60Android()
{
#if NETCOREAPP1_1 || NET46
Assert.False(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
Assert.ThrowsAny<NotSupportedException>(() => ReferenceAssemblies.Net.Net60Android);

// Avoid a warning for 'async' operator
await Task.Yield();
#else
Assert.True(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
var referenceAssemblies = ReferenceAssemblies.Net.Net60Android;
var resolved = await referenceAssemblies.ResolveAsync(LanguageNames.CSharp, CancellationToken.None);
Assert.NotEmpty(resolved);
#endif
}

[Fact]
public async Task ResolveReferenceAssemblies_Net60iOS()
{
#if NETCOREAPP1_1 || NET46
Assert.False(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
Assert.ThrowsAny<NotSupportedException>(() => ReferenceAssemblies.Net.Net60iOS);

// Avoid a warning for 'async' operator
await Task.Yield();
#else
Assert.True(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
var referenceAssemblies = ReferenceAssemblies.Net.Net60iOS;
var resolved = await referenceAssemblies.ResolveAsync(LanguageNames.CSharp, CancellationToken.None);
Assert.NotEmpty(resolved);
#endif
}

[Fact]
public async Task ResolveReferenceAssemblies_Net60MacOS()
{
#if NETCOREAPP1_1 || NET46
Assert.False(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
Assert.ThrowsAny<NotSupportedException>(() => ReferenceAssemblies.Net.Net60MacOS);

// Avoid a warning for 'async' operator
await Task.Yield();
#else
Assert.True(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
var referenceAssemblies = ReferenceAssemblies.Net.Net60MacOS;
var resolved = await referenceAssemblies.ResolveAsync(LanguageNames.CSharp, CancellationToken.None);
Assert.NotEmpty(resolved);
#endif
}

[Fact]
public async Task ResolveReferenceAssemblies_Net60MacCatalyst()
{
#if NETCOREAPP1_1 || NET46
Assert.False(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
Assert.ThrowsAny<NotSupportedException>(() => ReferenceAssemblies.Net.Net60MacCatalyst);

// Avoid a warning for 'async' operator
await Task.Yield();
#else
Assert.True(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
var referenceAssemblies = ReferenceAssemblies.Net.Net60MacCatalyst;
var resolved = await referenceAssemblies.ResolveAsync(LanguageNames.CSharp, CancellationToken.None);
Assert.NotEmpty(resolved);
#endif
}

[Fact]
public async Task ResolveReferenceAssemblies_Net60TvOS()
{
#if NETCOREAPP1_1 || NET46
Assert.False(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
Assert.ThrowsAny<NotSupportedException>(() => ReferenceAssemblies.Net.Net60TvOS);

// Avoid a warning for 'async' operator
await Task.Yield();
#else
Assert.True(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
var referenceAssemblies = ReferenceAssemblies.Net.Net60TvOS;
var resolved = await referenceAssemblies.ResolveAsync(LanguageNames.CSharp, CancellationToken.None);
Assert.NotEmpty(resolved);
#endif
}

[Fact]
public async Task ResolveReferenceAssemblies_Net60()
{
#if NETCOREAPP1_1 || NET46
Assert.False(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
Assert.ThrowsAny<NotSupportedException>(() => ReferenceAssemblies.Net.Net60);

// Avoid a warning for 'async' operator
await Task.Yield();
#else
Assert.True(ReferenceAssemblies.TestAccessor.IsPackageBased("net6.0"));
var referenceAssemblies = ReferenceAssemblies.Net.Net60;
var resolved = await referenceAssemblies.ResolveAsync(LanguageNames.CSharp, CancellationToken.None);
Assert.NotEmpty(resolved);
#endif
}

[Theory]
[InlineData("net40")]
[InlineData("net45")]
Expand All @@ -451,6 +570,12 @@ public async Task ResolveReferenceAssemblies_Net50()
#if !(NETCOREAPP1_1 || NET46)
[InlineData("net5.0")]
[InlineData("net6.0")]
[InlineData("net6.0-windows")]
[InlineData("net6.0-android")]
[InlineData("net6.0-ios")]
[InlineData("net6.0-macos")]
[InlineData("net6.0-maccatalyst")]
[InlineData("net6.0-tvos")]
#endif
[InlineData("netstandard1.0")]
[InlineData("netstandard1.1")]
Expand Down Expand Up @@ -502,6 +627,12 @@ internal static ReferenceAssemblies ReferenceAssembliesForTargetFramework(string
"netcoreapp3.1" => ReferenceAssemblies.NetCore.NetCoreApp31,
"net5.0" => ReferenceAssemblies.Net.Net50,
"net6.0" => ReferenceAssemblies.Net.Net60,
"net6.0-windows" => ReferenceAssemblies.Net.Net60Windows,
"net6.0-android" => ReferenceAssemblies.Net.Net60Android,
"net6.0-ios" => ReferenceAssemblies.Net.Net60iOS,
"net6.0-macos" => ReferenceAssemblies.Net.Net60MacOS,
"net6.0-maccatalyst" => ReferenceAssemblies.Net.Net60MacCatalyst,
"net6.0-tvos" => ReferenceAssemblies.Net.Net60TvOS,
"netstandard1.0" => ReferenceAssemblies.NetStandard.NetStandard10,
"netstandard1.1" => ReferenceAssemblies.NetStandard.NetStandard11,
"netstandard1.2" => ReferenceAssemblies.NetStandard.NetStandard12,
Expand Down

0 comments on commit 1ed8954

Please sign in to comment.