Azure / Azure/azure-functions-core-tools
.NET8 in-process migration throws metadata build error
- 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
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