У меня есть функция. NET Core 3.1 Azure (может быть, не имеет значения), и я изменил мой .csproj, чтобы архивировать двоичные файлы с помощью ZipDirectory после запуска сборки. При архивировании я заметил, что ZipDirectory не архивирует папки для каждой функции, которая создается во время сборки, а архивирует все остальное. Я запускаю MSBuild через командную строку разработчика для VS 2019 с msbuild /p:platform="Any CPU" /p:configuration="Release" /p:VisualStudioVersion="16.0"
в том же каталоге, где находится мое решение. Я предоставил мой .csproj и мой единственный файл .cs в проекте:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.3" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
<Target Name="DeleteArtifactsFolder" AfterTargets="Build">
<RemoveDir Directories="$(OutputPath)\..\..\..\Artifacts" />
</Target>
<Target Name="CreateArtifactsDirectory" AfterTargets="DeleteArtifactsFolder">
<MakeDir Directories="$(OutputPath)\..\..\..\Artifacts" />
</Target>
<Target Name="ZipBinariesToArtifacts" AfterTargets="CreateArtifactsDirectory">
<ZipDirectory SourceDirectory="$(OutputPath)" DestinationFile="$(OutputPath)\..\..\..\Artifacts\Artifacts.zip" />
</Target>
</Project>
Вот единственный файл .cs в проекте:
namespace MyFunctionApp
{
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
public static class Functions
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "1")] HttpRequest req,
ILogger log)
{
return new OkResult();
}
[FunctionName("Function2")]
public static async Task<IActionResult> Run2(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "1")] HttpRequest req,
ILogger log)
{
return new OkResult();
}
}
}
Вот скриншоты файлы, которые, как я ожидаю, будут заархивированы и файлы, которые фактически заархивированы . Одна вещь, которую я заметил, это то, что она копирует файл MyFunctionApp.pdb
из корзины в root почтового индекса.
Редактировать: я сделал тест, преднамеренно выдав ошибку zip, выполнив архивирование в папку это еще не существует, и я заметил, что ошибки zip-задач перед созданием папок Function1
и Function2
, но после создания других файлов сборки. Это заставляет меня думать, что задача zip начинается до того, как закончится сборка. Кто-нибудь знает, что я сделал не так?