Skip to content

Commit 5dbd783

Browse files
jaredparJoeRobich
andauthored
Rework our netstandard1.3 test references (#56223)
* Rework our netstandard1.3 test references The `netstandard1.3` test references were being provided by our MS.CA.Test.Resources.Proprietary package. The contents of this package get included in the output directory of every single unit test DLL that we build (which contributes to build output size). The references themselves though were only used in a very small number of tests. This change upgrades to a version of MS.CA.Test.Resources.Proprietary that has the `netstandard1.3` references removed and adds the `netstandard1.3` references to only the projects that needs them * Update eng/Versions.props Co-authored-by: Joey Robichaud <joseph.robichaud@microsoft.com> Co-authored-by: Joey Robichaud <joseph.robichaud@microsoft.com>
1 parent 0240973 commit 5dbd783

File tree

9 files changed

+175
-213
lines changed

9 files changed

+175
-213
lines changed

eng/Versions.props

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,10 @@
5050
-->
5151
<PropertyGroup>
5252
<BasicUndoVersion>0.9.3</BasicUndoVersion>
53-
<BasicReferenceAssembliesNetStandard20Version>1.2.1</BasicReferenceAssembliesNetStandard20Version>
54-
<BasicReferenceAssembliesNet50Version>1.2.1</BasicReferenceAssembliesNet50Version>
55-
<BasicReferenceAssembliesNet60Version>1.2.2</BasicReferenceAssembliesNet60Version>
53+
<BasicReferenceAssembliesNetStandard20Version>1.2.4</BasicReferenceAssembliesNetStandard20Version>
54+
<BasicReferenceAssembliesNet50Version>1.2.4</BasicReferenceAssembliesNet50Version>
55+
<BasicReferenceAssembliesNet60Version>1.2.4</BasicReferenceAssembliesNet60Version>
56+
<BasicReferenceAssembliesNetStandard13Version>1.2.4</BasicReferenceAssembliesNetStandard13Version>
5657
<BenchmarkDotNetVersion>0.13.0</BenchmarkDotNetVersion>
5758
<BenchmarkDotNetDiagnosticsWindowsVersion>0.13.0</BenchmarkDotNetDiagnosticsWindowsVersion>
5859
<DiffPlexVersion>1.4.4</DiffPlexVersion>
@@ -78,7 +79,7 @@
7879
<MicrosoftCodeAnalysisCSharpCodeRefactoringTestingXUnitVersion>$(MicrosoftCodeAnalysisTestingVersion)</MicrosoftCodeAnalysisCSharpCodeRefactoringTestingXUnitVersion>
7980
<MicrosoftCodeAnalysisCSharpCodeStyleVersion>$(CodeStyleAnalyzerVersion)</MicrosoftCodeAnalysisCSharpCodeStyleVersion>
8081
<MicrosoftCodeAnalysisElfieVersion>1.0.0-rc14</MicrosoftCodeAnalysisElfieVersion>
81-
<MicrosoftCodeAnalysisTestResourcesProprietaryVersion>2.0.41</MicrosoftCodeAnalysisTestResourcesProprietaryVersion>
82+
<MicrosoftCodeAnalysisTestResourcesProprietaryVersion>2.0.44</MicrosoftCodeAnalysisTestResourcesProprietaryVersion>
8283
<MicrosoftCodeAnalysisVisualBasicAnalyzerTestingXUnitVersion>$(MicrosoftCodeAnalysisTestingVersion)</MicrosoftCodeAnalysisVisualBasicAnalyzerTestingXUnitVersion>
8384
<MicrosoftCodeAnalysisVisualBasicCodeFixTestingXUnitVersion>$(MicrosoftCodeAnalysisTestingVersion)</MicrosoftCodeAnalysisVisualBasicCodeFixTestingXUnitVersion>
8485
<MicrosoftCodeAnalysisVisualBasicCodeRefactoringTestingXUnitVersion>$(MicrosoftCodeAnalysisTestingVersion)</MicrosoftCodeAnalysisVisualBasicCodeRefactoringTestingXUnitVersion>

src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs

Lines changed: 161 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
using Roslyn.Test.Utilities.TestGenerators;
3636
using Roslyn.Utilities;
3737
using Xunit;
38+
using Basic.Reference.Assemblies;
3839
using static Microsoft.CodeAnalysis.CommonDiagnosticAnalyzers;
3940
using static Roslyn.Test.Utilities.SharedResourceHelpers;
4041
using static Roslyn.Test.Utilities.TestMetadata;
@@ -11513,7 +11514,7 @@ public void LoadinganalyzerNetStandard13()
1151311514

1151411515
var analyzerDir = Temp.CreateDirectory();
1151511516

11516-
var analyzerFile = analyzerDir.CreateFile(analyzerFileName).WriteAllBytes(DesktopTestHelpers.CreateCSharpAnalyzerNetStandard13(Path.GetFileNameWithoutExtension(analyzerFileName)));
11517+
var analyzerFile = analyzerDir.CreateFile(analyzerFileName).WriteAllBytes(CreateCSharpAnalyzerNetStandard13(Path.GetFileNameWithoutExtension(analyzerFileName)));
1151711518
var srcFile = analyzerDir.CreateFile(srcFileName).WriteAllText("public class C { }");
1151811519

1151911520
var result = ProcessUtilities.Run(s_CSharpCompilerExecutable, arguments: $"/nologo /t:library /analyzer:{analyzerFileName} {srcFileName}", workingDirectory: analyzerDir.Path);
@@ -11530,6 +11531,165 @@ at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteAndCatchIfThrows_N
1153011531
}
1153111532
#endif
1153211533

11534+
private static ImmutableArray<byte> CreateCSharpAnalyzerNetStandard13(string analyzerAssemblyName)
11535+
{
11536+
var minSystemCollectionsImmutableSource = @"
11537+
[assembly: System.Reflection.AssemblyVersion(""1.2.3.0"")]
11538+
11539+
namespace System.Collections.Immutable
11540+
{
11541+
public struct ImmutableArray<T>
11542+
{
11543+
}
11544+
}
11545+
";
11546+
11547+
var minCodeAnalysisSource = @"
11548+
using System;
11549+
11550+
[assembly: System.Reflection.AssemblyVersion(""2.0.0.0"")]
11551+
11552+
namespace Microsoft.CodeAnalysis.Diagnostics
11553+
{
11554+
[AttributeUsage(AttributeTargets.Class)]
11555+
public sealed class DiagnosticAnalyzerAttribute : Attribute
11556+
{
11557+
public DiagnosticAnalyzerAttribute(string firstLanguage, params string[] additionalLanguages) {}
11558+
}
11559+
11560+
public abstract class DiagnosticAnalyzer
11561+
{
11562+
public abstract System.Collections.Immutable.ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; }
11563+
public abstract void Initialize(AnalysisContext context);
11564+
}
11565+
11566+
public abstract class AnalysisContext
11567+
{
11568+
}
11569+
}
11570+
11571+
namespace Microsoft.CodeAnalysis
11572+
{
11573+
public sealed class DiagnosticDescriptor
11574+
{
11575+
}
11576+
}
11577+
";
11578+
var minSystemCollectionsImmutableImage = CSharpCompilation.Create(
11579+
"System.Collections.Immutable",
11580+
new[] { SyntaxFactory.ParseSyntaxTree(minSystemCollectionsImmutableSource) },
11581+
new MetadataReference[] { NetStandard13.SystemRuntime },
11582+
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, cryptoPublicKey: TestResources.TestKeys.PublicKey_b03f5f7f11d50a3a)).EmitToArray();
11583+
11584+
var minSystemCollectionsImmutableRef = MetadataReference.CreateFromImage(minSystemCollectionsImmutableImage);
11585+
11586+
var minCodeAnalysisImage = CSharpCompilation.Create(
11587+
"Microsoft.CodeAnalysis",
11588+
new[] { SyntaxFactory.ParseSyntaxTree(minCodeAnalysisSource) },
11589+
new MetadataReference[]
11590+
{
11591+
NetStandard13.SystemRuntime,
11592+
minSystemCollectionsImmutableRef
11593+
},
11594+
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, cryptoPublicKey: TestResources.TestKeys.PublicKey_31bf3856ad364e35)).EmitToArray();
11595+
11596+
var minCodeAnalysisRef = MetadataReference.CreateFromImage(minCodeAnalysisImage);
11597+
11598+
var analyzerSource = @"
11599+
using System;
11600+
using System.Collections.ObjectModel;
11601+
using System.Collections.Immutable;
11602+
using System.ComponentModel;
11603+
using System.Diagnostics;
11604+
using System.Globalization;
11605+
using System.IO;
11606+
using System.IO.Compression;
11607+
using System.Net.Http;
11608+
using System.Net.Security;
11609+
using System.Net.Sockets;
11610+
using System.Reflection;
11611+
using System.Runtime.InteropServices;
11612+
using System.Runtime.Serialization;
11613+
using System.Security.AccessControl;
11614+
using System.Security.Cryptography;
11615+
using System.Security.Principal;
11616+
using System.Text;
11617+
using System.Threading;
11618+
using System.Threading.Tasks;
11619+
using System.Xml;
11620+
using System.Xml.Serialization;
11621+
using System.Xml.XPath;
11622+
using Microsoft.CodeAnalysis;
11623+
using Microsoft.CodeAnalysis.Diagnostics;
11624+
using Microsoft.Win32.SafeHandles;
11625+
11626+
[DiagnosticAnalyzer(""C#"")]
11627+
public class TestAnalyzer : DiagnosticAnalyzer
11628+
{
11629+
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => throw new NotImplementedException(new[]
11630+
{
11631+
typeof(Win32Exception), // Microsoft.Win32.Primitives
11632+
typeof(AppContext), // System.AppContext
11633+
typeof(Console), // System.Console
11634+
typeof(ValueTuple), // System.ValueTuple
11635+
typeof(FileVersionInfo), // System.Diagnostics.FileVersionInfo
11636+
typeof(Process), // System.Diagnostics.Process
11637+
typeof(ChineseLunisolarCalendar), // System.Globalization.Calendars
11638+
typeof(ZipArchive), // System.IO.Compression
11639+
typeof(ZipFile), // System.IO.Compression.ZipFile
11640+
typeof(FileOptions), // System.IO.FileSystem
11641+
typeof(FileAttributes), // System.IO.FileSystem.Primitives
11642+
typeof(HttpClient), // System.Net.Http
11643+
typeof(AuthenticatedStream), // System.Net.Security
11644+
typeof(IOControlCode), // System.Net.Sockets
11645+
typeof(RuntimeInformation), // System.Runtime.InteropServices.RuntimeInformation
11646+
typeof(SerializationException), // System.Runtime.Serialization.Primitives
11647+
typeof(GenericIdentity), // System.Security.Claims
11648+
typeof(Aes), // System.Security.Cryptography.Algorithms
11649+
typeof(CspParameters), // System.Security.Cryptography.Csp
11650+
typeof(AsnEncodedData), // System.Security.Cryptography.Encoding
11651+
typeof(AsymmetricAlgorithm), // System.Security.Cryptography.Primitives
11652+
typeof(SafeX509ChainHandle), // System.Security.Cryptography.X509Certificates
11653+
typeof(IXmlLineInfo), // System.Xml.ReaderWriter
11654+
typeof(XmlNode), // System.Xml.XmlDocument
11655+
typeof(XPathDocument), // System.Xml.XPath
11656+
typeof(XDocumentExtensions), // System.Xml.XPath.XDocument
11657+
typeof(CodePagesEncodingProvider),// System.Text.Encoding.CodePages
11658+
typeof(ValueTask<>), // System.Threading.Tasks.Extensions
11659+
11660+
// csc doesn't ship with facades for the following assemblies.
11661+
// Analyzers can't use them unless they carry the facade with them.
11662+
11663+
// typeof(SafePipeHandle), // System.IO.Pipes
11664+
// typeof(StackFrame), // System.Diagnostics.StackTrace
11665+
// typeof(BindingFlags), // System.Reflection.TypeExtensions
11666+
// typeof(AccessControlActions), // System.Security.AccessControl
11667+
// typeof(SafeAccessTokenHandle), // System.Security.Principal.Windows
11668+
// typeof(Thread), // System.Threading.Thread
11669+
}.Length.ToString());
11670+
11671+
public override void Initialize(AnalysisContext context)
11672+
{
11673+
}
11674+
}";
11675+
11676+
var references =
11677+
new MetadataReference[]
11678+
{
11679+
minCodeAnalysisRef,
11680+
minSystemCollectionsImmutableRef
11681+
};
11682+
references = references.Concat(NetStandard13.All).ToArray();
11683+
11684+
var analyzerImage = CSharpCompilation.Create(
11685+
analyzerAssemblyName,
11686+
new SyntaxTree[] { SyntaxFactory.ParseSyntaxTree(analyzerSource) },
11687+
references: references,
11688+
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)).EmitToArray();
11689+
11690+
return analyzerImage;
11691+
}
11692+
1153311693
[WorkItem(406649, "https://devdiv.visualstudio.com/DevDiv/_workitems?id=484417")]
1153411694
[ConditionalFact(typeof(WindowsDesktopOnly), typeof(IsEnglishLocal), Reason = "https://github.com/dotnet/roslyn/issues/30321")]
1153511695
public void MicrosoftDiaSymReaderNativeAltLoadPath()

src/Compilers/CSharp/Test/CommandLine/Microsoft.CodeAnalysis.CSharp.CommandLine.UnitTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<ProjectReference Include="..\..\Portable\Microsoft.CodeAnalysis.CSharp.csproj" />
2121
<ProjectReference Include="..\..\..\VisualBasic\Portable\Microsoft.CodeAnalysis.VisualBasic.vbproj" />
2222
<ProjectReference Include="..\..\..\..\Test\PdbUtilities\Roslyn.Test.PdbUtilities.csproj" />
23+
<PackageReference Include="Basic.Reference.Assemblies.NetStandard13" Version="$(BasicReferenceAssembliesNetStandard13Version)" />
2324
</ItemGroup>
2425
<ItemGroup>
2526
<EmbeddedResource Include="..\..\csc\csc.rsp" LogicalName="csc.rsp" />

src/Compilers/Test/Core/Mocks/TestReferences.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,6 @@ public static class silverlight_v5_0_5_0
104104
}
105105
}
106106

107-
public static class NetStandard13
108-
{
109-
private static readonly Lazy<PortableExecutableReference> s_systemRuntime = new Lazy<PortableExecutableReference>(
110-
() => AssemblyMetadata.CreateFromImage(ProprietaryTestResources.netstandard13.System_Runtime).GetReference(display: @"System.Runtime.dll (netstandard13 ref)"),
111-
LazyThreadSafetyMode.PublicationOnly);
112-
public static PortableExecutableReference SystemRuntime => s_systemRuntime.Value;
113-
}
114-
115107
public static class DiagnosticTests
116108
{
117109
public static class ErrTestLib01

0 commit comments

Comments
 (0)