Azure / Azure/azure-functions-core-tools

.NET8 in-process migration throws metadata build error

Open
#3,709 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
C#
Stars
1.5k
Forks
498
Avg merge
5d 4h
Merged PRs (30d)
15

Description

I'm following the migration guide for updating a function to .NET8:
https://learn.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library?tabs=v4%2Ccmd#updating-to-target-net-8

But after doing all these steps the build fails in VS (also tried it directly with the Azure Function Core Tools from cli, same results)

```7>ServicesFunctionApp -> C:\Git\IoTPlatform.Services\src\Backend\src\ServicesFunctionApp\bin\Debug\net8.0\Tricloud.IoT.Services.Functions.dll
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : System.NullReferenceException: Object reference not set to an instance of an object.
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at MakeFunctionJson.AttributeExtensions.IsWebJobsAttribute(CustomAttribute attribute) in /_/src/Microsoft.NET.Sdk.Functions.Generator/AttributeExtensions.cs:line 52
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at MakeFunctionJson.ParameterInfoExtensions.<>c.b__0_0(CustomAttribute a) in /_/src/Microsoft.NET.Sdk.Functions.Generator/ParameterInfoExtensions.cs:line 19
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at MakeFunctionJson.ParameterInfoExtensions.IsWebJobSdkTriggerParameter(ParameterDefinition parameterInfo) in /_/src/Microsoft.NET.Sdk.Functions.Generator/ParameterInfoExtensions.cs:line 17
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at MakeFunctionJson.MethodInfoExtensions.<>c.b__4_0(ParameterDefinition p) in /_/src/Microsoft.NET.Sdk.Functions.Generator/MethodInfoExtensions.cs:line 41
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at MakeFunctionJson.MethodInfoExtensions.HasTriggerAttribute(MethodDefinition method) in /_/src/Microsoft.NET.Sdk.Functions.Generator/MethodInfoExtensions.cs:line 41
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at MakeFunctionJson.MethodInfoExtensions.HasValidWebJobSdkTriggerAttribute(MethodDefinition method) in /_/src/Microsoft.NET.Sdk.Functions.Generator/MethodInfoExtensions.cs:line 25
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at MakeFunctionJson.FunctionJsonConverter.GenerateFunctions(IEnumerable`1 types)+MoveNext() in /_/src/Microsoft.NET.Sdk.Functions.Generator/FunctionJsonConverter.cs:line 134
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at MakeFunctionJson.FunctionJsonConverter.TryGenerateFunctionJsons() in /_/src/Microsoft.NET.Sdk.Functions.Generator/FunctionJsonConverter.cs:line 194
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : at MakeFunctionJson.FunctionJsonConverter.TryRun() in /_/src/Microsoft.NET.Sdk.Functions.Generator/FunctionJsonConverter.cs:line 87
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : Error generating functions metadata
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error :
7>C:\Users\Nikolaj\.nuget\packages\microsoft.net.sdk.functions\4.4.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : Metadata generation failed.
```

What I have tried:
- All dependencies are updated.
- Removed all old .NET SDKs + runtimes.
- Running as admin, both from cli and VS.
- Restarting PC multiple times.

Let me know if you need more information, would love to get our functions up and running with .NET8

Contributor guide

Open the contributing guide

Research direction

Reproduce the .NET 8 build with Microsoft.NET.Sdk.Functions 4.4.0 using Visual Studio or Azure Functions Core Tools, then inspect the stack-trace entry points in AttributeExtensions.cs, ParameterInfoExtensions.cs, MethodInfoExtensions.cs, and FunctionJsonConverter.cs. Done means function metadata generation completes without the NullReferenceException.

Written by the indexing model from the issue text.

Assessment

Tech stack
azure, csharp
Domain
build-system, cli, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.