File: Commands\Sdk\IntegrationAssemblyNameResolver.cs
Web Access
Project: src\src\Aspire.Cli\Aspire.Cli.csproj (aspire)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Xml.Linq;
 
namespace Aspire.Cli.Commands.Sdk;
 
/// <summary>
/// Resolves the assembly name used by SDK commands for project references.
/// </summary>
internal static class IntegrationAssemblyNameResolver
{
    public static string Resolve(FileInfo projectFile)
    {
        ArgumentNullException.ThrowIfNull(projectFile);
 
        var fallbackName = Path.GetFileNameWithoutExtension(projectFile.Name);
        if (!projectFile.Exists)
        {
            return fallbackName;
        }
 
        try
        {
            var document = XDocument.Load(projectFile.FullName);
            var assemblyName = document
                .Descendants()
                .FirstOrDefault(element => element.Name.LocalName == "AssemblyName" && !string.IsNullOrWhiteSpace(element.Value))?
                .Value
                .Trim();
 
            return string.IsNullOrWhiteSpace(assemblyName) ? fallbackName : assemblyName;
        }
        catch
        {
            return fallbackName;
        }
    }
}