Не удалось разрешить сборку «Microsoft.AspNetCore.Mvc.Core, версия = 3.1.0.0» при создании Azure Function v3

#c# #azure #azure-devops #azure-functions

#c# #azure #azure-devops #azure-функции

Вопрос:

У меня есть функция Azure v3.1.

На моем компьютере (macOS Visual Studio Mac / Jetbrains Rider) не удается выполнить сборку со следующей ошибкой:

 Error : Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Microsoft.AspNetCore.Mvc.Core, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
  

Вот полный список вызовов:

 ##[error]C:UsersVssAdministrator.nugetpackagesmicrosoft.net.sdk.functions3.0.9buildMicrosoft.NET.Sdk.Functions.Build.targets(32,5): Error : Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Microsoft.AspNetCore.Mvc.Core, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
   at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
   at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name)
   at Mono.Cecil.DefaultAssemblyResolver.Resolve(AssemblyNameReference name)
   at Mono.Cecil.MetadataResolver.Resolve(TypeReference type)
   at Mono.Cecil.ModuleDefinition.Resolve(TypeReference type)
   at Mono.Cecil.TypeReference.Resolve()
   at MakeFunctionJson.AttributeExtensions.IsWebJobsAttribute(CustomAttribute attribute)
   at MakeFunctionJson.ParameterInfoExtensions.<>c.<ToFunctionJsonBindings>b__1_0(CustomAttribute a)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.ToList()
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at MakeFunctionJson.ParameterInfoExtensions.ToFunctionJsonBindings(ParameterDefinition parameterInfo)
   at MakeFunctionJson.MethodInfoExtensions.<>c.<ToFunctionJson>b__6_1(ParameterDefinition p)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.ToArray()
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at MakeFunctionJson.MethodInfoExtensions.ToFunctionJson(MethodDefinition method, String assemblyPath)
   at MakeFunctionJson.FunctionJsonConverter.GenerateFunctions(IEnumerable`1 types) MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at MakeFunctionJson.FunctionJsonConverter.TryGenerateFunctionJsons()
   at MakeFunctionJson.FunctionJsonConverter.TryRun()
Error generating functions metadata
  

Вот содержимое моего csproj (я следовал рекомендациям относительно AspNetCore 3.1):

 <Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <AzureFunctionsVersion>v3</AzureFunctionsVersion>
        <LangVersion>latest</LangVersion>
        <Nullable>enable</Nullable>
        <RootNamespace>AccountManager</RootNamespace>
        <AssemblyName>AccountManager</AssemblyName>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
      <OutputPath>../binDebug</OutputPath>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
      <OutputPath>../binRelease</OutputPath>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.0.1" />
        <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
        <PackageReference Include="Microsoft.Azure.Management.Storage" Version="17.2.0" />
        <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.7" />
        <PackageReference Include="Microsoft.Extensions.Http" Version="3.1.7" />
        <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.9" />
        <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
        <PackageReference Include="NoSuchCompany.Diagnostics.Guards" Version="1.0.71" />
    </ItemGroup>
    <ItemGroup>
        <None Update="host.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="local.settings.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
            <CopyToPublishDirectory>Never</CopyToPublishDirectory>
        </None>
    </ItemGroup>
    <ItemGroup>
      <ProjectReference Include="..CoreCore.csproj" />
    </ItemGroup>
    <ItemGroup>
        <FrameworkReference Include="Microsoft.AspNetCore.App" />
    </ItemGroup>
</Project>
  

Вопрос

Почему конвейеру не удается создать проект?

Обновление 1

После очистки вывода решения и очистки папки пакетов на моем компьютере сборка завершается с ошибкой и на моем компьютере.

Я солгал

Обновление 2

При попытке сгенерировать выходные данные Azure Functions происходит сбой:

 2>Target "_GenerateFunctionsPostBuild" in file "/Users/christophe/.nuget/packages/microsoft.net.sdk.functions/3.0.9/build/Microsoft.NET.Sdk.Functions.Build.targets" from project "AccountManager/src/AccountManager/AccountManager.csproj" (entry point):
       Using "GenerateFunctions" task from assembly "/Users/christophe/.nuget/packages/microsoft.net.sdk.functions/3.0.9/build/../tools/netcoreapp3.1/Microsoft.NET.Sdk.Functions.MSBuild.dll".
       Task "GenerateFunctions"
         Function generator path: '/usr/local/share/dotnet/dotnet'
         Microsoft.NET.Sdk.Functions.Generator.dll "AccountManager/src/bin/Debug/netcoreapp3.1/bin/AccountManager.dll " "AccountManager/src/bin/Debug/netcoreapp3.1/ " "False "
  
2>/Users/christophe/.nuget/packages/microsoft.net.sdk.functions/3.0.9/build/Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Microsoft.AspNetCore.Mvc.Core, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' [AccountManager/src/AccountManager/AccountManager.csproj]
  

Если я скопирую следующий файл в bin папку, он будет работать:

 /usr/local/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.8/ref/netcoreapp3.1/Microsoft.AspNetCore.Mvc.Core.dll
  

Комментарии:

1. Является ли конвейер yaml? Если да, не могли бы вы включить это в свой вопрос?

2. @eli Я обновил вопрос. На моем компьютере также произошел сбой после очистки выходных данных сборки. Копирование Microsoft вручную. AspNetCore.Mvc.Core.dll в выходной папке работает, но мне нужно понять, почему…

3. Не могли бы вы попробовать добавить недостающий пакет напрямую? <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />

4. @eli Я добавил его, но сборка по-прежнему завершается неудачно: (

5. @HarshitaSingh-MSFT Я попробовал, однако последняя версия NuGet — 2.2.5. Там объясняется: «С выпуском .NET Core 3.0 многие ASP.NET Сборки ядра больше не публикуются в NuGet в виде пакетов. Вместо этого сборки включены в Microsoft. AspNetCore. Общий фреймворк приложения, »

Ответ №1:

Если вы добавили [FromQuery] или любой другой атрибут в свою функцию Azure «подпись контроллера», это могло произойти, по крайней мере, то, что случилось со мной…

после того, как я удалил атрибут [FromQuery], он вернулся к жизни..

Я нашел этот ответ, который прибил его: https://github.com/Azure/azure-functions-vs-build-sdk/issues/435#issuecomment-656854953

Комментарии:

1. вместо этого вам нужно проанализировать параметры запроса из запроса свойств объектов HttpRequest, который используется в качестве аргумента функции Azure.