| File: Tasks\OneDeploy\CreatePackageFile.cs | Web Access |
| Project: src\sdk\src\WebSdk\Publish\Tasks\Microsoft.NET.Sdk.Publish.Tasks.csproj (Microsoft.NET.Sdk.Publish.Tasks) |
// 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.Framework; namespace Microsoft.NET.Sdk.Publish.Tasks.OneDeploy; /// <summary> /// A task that creates a package file for the content in a given path. /// </summary> public class CreatePackageFile : Task { private readonly IFilePackager _filePackager; public CreatePackageFile() { _filePackager = new ZipFilePackager(); } // Test constructor internal CreatePackageFile(IFilePackager filePackager) { _filePackager = filePackager; } [Required] public string? ContentToPackage { get; set; } [Required] public string? ProjectName { get; set; } [Required] public string? IntermediateTempPath { get; set; } [Output] public string? CreatedPackageFilePath { get; set; } /// <inheritdoc/> public override bool Execute() { if (ContentToPackage is null || ContentToPackage.Length == 0 || string.IsNullOrEmpty(ProjectName) || string.IsNullOrEmpty(IntermediateTempPath)) { return false; } var packageFileName = $"{ProjectName}-{DateTime.Now:yyyyMMddHHmmssFFF}{_filePackager.Extension}"; var packageFilePath = Path.Combine(IntermediateTempPath, packageFileName); // package content var packageFileTask = _filePackager.CreatePackageAsync(ContentToPackage, packageFilePath, CancellationToken.None); packageFileTask.Wait(); CreatedPackageFilePath = packageFileTask.Result ? packageFilePath : string.Empty; return !string.IsNullOrEmpty(CreatedPackageFilePath); } }