File: Commands\PublishCommand.cs
Web Access
Project: ..\..\..\test\Microsoft.NET.TestFramework\Microsoft.NET.TestFramework.csproj (Microsoft.NET.TestFramework)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.ComponentModel;
 
namespace Microsoft.NET.TestFramework.Commands
{
    public sealed class PublishCommand : MSBuildCommand
    {
        private const string PublishSubfolderName = "publish";
 
        // Encourage use of the other overload, which is generally simpler to use
        [EditorBrowsable(EditorBrowsableState.Never)]
        public PublishCommand(ITestOutputHelper log, string projectPath)
            : base(log, "Publish", projectPath, relativePathToProject: null, requiredArgs: "/p:_IsPublishing=true")
        {
        }
 
        public PublishCommand(TestAsset testAsset, string? relativePathToProject = null)
            : base(testAsset, "Publish", relativePathToProject, requiredArgs: "/p:_IsPublishing=true")
        {
        }
 
        public override DirectoryInfo GetOutputDirectory(string? targetFramework = null, string configuration = "Debug", string? runtimeIdentifier = "", string? platformIdentifier = "")
        {
            if (TestAsset != null)
            {
                return new DirectoryInfo(OutputPathCalculator.FromProject(ProjectFile, TestAsset).GetPublishDirectory(targetFramework, configuration, runtimeIdentifier, platformIdentifier));
            }
 
            if (string.IsNullOrEmpty(targetFramework))
            {
                targetFramework = "netcoreapp1.1";
            }
 
            DirectoryInfo baseDirectory = base.GetOutputDirectory(targetFramework, configuration, runtimeIdentifier, platformIdentifier);
            return new DirectoryInfo(Path.Combine(baseDirectory.FullName, PublishSubfolderName));
        }
 
        public string GetPublishedAppPath(string appName, string targetFramework = "")
        {
            return Path.Combine(GetOutputDirectory(targetFramework).FullName, $"{appName}.dll");
        }
    }
}