0038790902
- KompasDispatcher: выделенный STA-поток + очередь задач, InvokeAsync<T>, inline-выполнение вложенных вызовов, корректный Dispose - NativeMethods: attach к запущенному COM (CLSIDFromProgID + GetActiveObject, замена отсутствующего в .NET 8 Marshal.GetActiveObject) - KompasSession: подключение через API5 (KompasObject) -> API7 (IApplication), attach/launch, версия/редакция, освобождение COM на STA-потоке - tests: 5 unit-тестов диспетчера + 3 интеграционных теста подключения (зелёные) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
21 lines
1.0 KiB
C#
21 lines
1.0 KiB
C#
namespace Kompas.Mcp.Core;
|
|
|
|
/// <summary>Сведения об установленном подключении к КОМПАС.</summary>
|
|
public sealed record KompasConnectionInfo
|
|
{
|
|
/// <summary>ProgID, по которому удалось подключиться (например, <c>KOMPAS.Application.5</c>).</summary>
|
|
public required string ProgId { get; init; }
|
|
|
|
/// <summary>true — экземпляр КОМПАС запущен этим процессом; false — присоединились к работающему.</summary>
|
|
public required bool WasLaunched { get; init; }
|
|
|
|
/// <summary>Версия системы в формате Major.Minor.Release.</summary>
|
|
public required string Version { get; init; }
|
|
|
|
/// <summary>Номер сборки внутри версии.</summary>
|
|
public required int BuildNumber { get; init; }
|
|
|
|
/// <summary>Редакция (по ProgID): "Home/LT" для KOMPASLT.*, иначе "Full".</summary>
|
|
public required string Edition { get; init; }
|
|
}
|