| File: BackEnd\Components\SdkResolution\SdkResolverRequest.cs | Web Access |
| Project: src\msbuild\src\Build\Microsoft.Build.csproj (Microsoft.Build) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Build.Construction; using Microsoft.Build.Framework; #nullable disable namespace Microsoft.Build.BackEnd.SdkResolution { /// <summary> /// Represents an SDK resolver request which is serialized and sent between nodes. This is mostly a wrapper around <see cref="SdkReference"/> /// with an additional <see cref="INodePacket"/> implementation. /// </summary> internal sealed class SdkResolverRequest : INodePacket { private BuildEventContext _buildEventContext; private ElementLocation _elementLocation; private string _minimumVersion; private string _name; private string _projectPath; private string _solutionPath; private int _submissionId; private string _version; private bool _interactive; private bool _isRunningInVisualStudio; public SdkResolverRequest(ITranslator translator) { Translate(translator); } private SdkResolverRequest(int submissionId, string name, string version, string minimumVersion, BuildEventContext buildEventContext, ElementLocation elementLocation, string solutionPath, string projectPath, bool interactive, bool isRunningInVisualStudio) { _buildEventContext = buildEventContext; _submissionId = submissionId; _elementLocation = elementLocation; _minimumVersion = minimumVersion; _name = name; _projectPath = projectPath; _solutionPath = solutionPath; _version = version; _interactive = interactive; _isRunningInVisualStudio = isRunningInVisualStudio; } public BuildEventContext BuildEventContext => _buildEventContext; public ElementLocation ElementLocation => _elementLocation; public bool Interactive => _interactive; public bool IsRunningInVisualStudio => _isRunningInVisualStudio; public string MinimumVersion => _minimumVersion; public string Name => _name; public int NodeId { get; set; } public string ProjectPath => _projectPath; public string SolutionPath => _solutionPath; public int SubmissionId => _submissionId; public NodePacketType Type => NodePacketType.ResolveSdkRequest; public string Version => _version; public static SdkResolverRequest Create(int submissionId, SdkReference sdkReference, BuildEventContext buildEventContext, ElementLocation elementLocation, string solutionPath, string projectPath, bool interactive, bool isRunningInVisualStudio) { return new SdkResolverRequest(submissionId, sdkReference.Name, sdkReference.Version, sdkReference.MinimumVersion, buildEventContext, elementLocation, solutionPath, projectPath, interactive, isRunningInVisualStudio); } public static INodePacket FactoryForDeserialization(ITranslator translator) { return new SdkResolverRequest(translator); } public void Translate(ITranslator translator) { translator.Translate(ref _buildEventContext); translator.Translate(ref _elementLocation, ElementLocation.FactoryForDeserialization); translator.Translate(ref _minimumVersion); translator.Translate(ref _name); translator.Translate(ref _projectPath); translator.Translate(ref _solutionPath); translator.Translate(ref _submissionId); translator.Translate(ref _version); translator.Translate(ref _interactive); translator.Translate(ref _isRunningInVisualStudio); } } }