/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/Test/Core/Mocks/StdOle.cs
83 строки
3 KB
Jared Parsons
Remove MS.CA.Test.Resources.Proprietary PackageReference (#75037)
11 сен 2024, 17:38
Не верифицирован
11 сен 2024, 17:38
6de8947
Код
Авторство
О чём код?
// 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.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Test.Utilities; using Microsoft.CodeAnalysis.Text; namespace Roslyn.Test.Utilities; /// <summary> /// This type produces stdole.dll that mimic the version used in the original Roslyn /// interop tests. /// </summary> public static class StdOle { public static PortableExecutableReference Build(IEnumerable<MetadataReference> references) { const string assemblyAttributes = """ using System.Reflection; using System.Runtime.InteropServices; [assembly: ImportedFromTypeLib("stdole")] [assembly: Guid("00020430-0000-0000-c000-000000000046")] [assembly: PrimaryInteropAssembly(2, 0)] [assembly: AssemblyVersion("7.0.3300.0")] """; const string code = """ using System.Runtime.InteropServices; namespace stdole; public struct GUID { public uint Data1; public ushort Data2; public ushort Data3; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public byte[] Data4; } [ComImport] [Guid("00020400-0000-0000-C000-000000000046")] [TypeLibType(512)] public interface IDispatch { } """; var publicKeyText = "" + "002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e8" + "4aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980" + "957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1" + "dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293"; var publicKey = TestHelpers.HexToByte(publicKeyText.AsSpan()); var publicKeyToken = AssemblyIdentity.CalculatePublicKeyToken(publicKey); Debug.Assert("B0-3F-5F-7F-11-D5-0A-3A" == BitConverter.ToString(publicKeyToken.ToArray())); var options = new CSharpCompilationOptions( OutputKind.DynamicallyLinkedLibrary, cryptoPublicKey: publicKey, optimizationLevel: OptimizationLevel.Release); var compilation = CSharpCompilation.Create( "stdole", [ CSharpSyntaxTree.ParseText(SourceText.From(code)), CSharpSyntaxTree.ParseText(SourceText.From(assemblyAttributes)) ], references: references, options); return compilation.EmitToPortableExecutableReference(); } }