/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/VisualStudio/IntegrationTest/Harness/XUnitShared/InProcess/OleServiceProvider.cs
50 строк
2 KB
David Barbet
Shorten file paths to prevent long path issues opening the slnx
10 дек 2025, 22:44
10 дек 2025, 22:44
7830fcf
Код
Авторство
О чём код?
// 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. namespace Xunit.InProcess { using System; using System.Runtime.InteropServices; using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider; internal sealed class OleServiceProvider : IServiceProvider { private static readonly Guid IUnknownGuid = new Guid("00000000-0000-0000-C000-000000000046"); private readonly IOleServiceProvider _serviceProvider; public OleServiceProvider(IOleServiceProvider serviceProvider) { _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); } public OleServiceProvider(EnvDTE.DTE dte) : this((IOleServiceProvider)dte) { } public object GetService(Type serviceType) { if (serviceType is null) { throw new ArgumentNullException(nameof(serviceType)); } if (serviceType.GUID == typeof(IOleServiceProvider).GUID) { return _serviceProvider; } Marshal.ThrowExceptionForHR(_serviceProvider.QueryService(serviceType.GUID, IUnknownGuid, out var service)); try { return Marshal.GetObjectForIUnknown(service); } finally { Marshal.Release(service); } } } }