While trying to locally run azure function in Microsoft Visual Studio Enterprise 2022 edition. Initially get popup message showing message that "The debugger is trying to locating source file. Please wait...C:..\src\Microsoft.Azure.WebJobs.Host\Hosting\WebJobServiceCollectionExtensions.cs"
The popup closes automatically and below runtime exception is thrown in C:...\WebJobsServiceCollectionExtensions.cs:
Inner Exception 1: TypeLoadException: Could not load type 'Microsoft.Azure.WebJobs.ParameterBindingData' from assembly 'Microsoft.Azure.WebJobs, Version=3.0.34.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
System.Reflection.TargetInvocationException
HResult=0x80131604
Message=Exception has been thrown by the target of an invocation.
Source=System.Private.CoreLib
StackTrace:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture)
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at DryIoc.ReflectionFactory.<>c__DisplayClass21_0.<GetActivator>b__1()
at DryIoc.Scope.TryGetOrAdd(ImMap`1 items, Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.Scope.GetOrAdd(Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.ReflectionFactory.CreateServiceExpression(MemberInfo ctorOrMember, Expression factoryExpr, Expression[] paramExprs, Request request)
at DryIoc.ReflectionFactory.CreateExpressionOrDefault(Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.ReflectionFactory.CreateExpressionOrDefault(Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.WrappersSupport.GetArrayExpression(Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.ReflectionFactory.CreateExpressionOrDefault(Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.Factory.GetDelegateOrDefault(Request request)
at DryIoc.Container.ResolveAndCacheDefaultFactoryDelegate(Type serviceType, IfUnresolved ifUnresolved)
at DryIoc.Container.DryIoc.IResolver.Resolve(Type serviceType, IfUnresolved ifUnresolved)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
at Microsoft.Azure.WebJobs.WebJobsServiceCollectionExtensions.<>c.<AddWebJobs>b__2_0(IServiceProvider p) in Microsoft.Azure.WebJobs\WebJobsServiceCollectionExtensions.cs:line 40
at DryIoc.Registrator.<>c__DisplayClass27_0.<RegisterDelegate>b__0(IResolverContext r)
at DryIoc.Scope.TryGetOrAdd(ImMap`1 items, Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.Scope.GetOrAdd(Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.Factory.ApplyReuse(Expression serviceExpr, Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.Factory.GetDelegateOrDefault(Request request)
at DryIoc.Container.DryIoc.IResolver.Resolve(Type serviceType, Object serviceKey, IfUnresolved ifUnresolved, Type requiredServiceType, Request preResolveParent, Object[] args)
at DryIoc.Scope.TryGetOrAdd(ImMap`1 items, Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.Scope.GetOrAdd(Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.Factory.ApplyReuse(Expression serviceExpr, Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.Factory.GetDelegateOrDefault(Request request)
at DryIoc.Container.ResolveAndCacheDefaultFactoryDelegate(Type serviceType, IfUnresolved ifUnresolved)
at DryIoc.Container.DryIoc.IResolver.Resolve(Type serviceType, IfUnresolved ifUnresolved)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
at Microsoft.Azure.WebJobs.WebJobsServiceCollectionExtensions.<>c.<AddWebJobs>b__2_6(IServiceProvider p) in Microsoft.Azure.WebJobs\WebJobsServiceCollectionExtensions.cs:line 68
at DryIoc.Registrator.<>c__DisplayClass27_0.<RegisterDelegate>b__0(IResolverContext r)
at DryIoc.Scope.TryGetOrAdd(ImMap`1 items, Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.Scope.GetOrAdd(Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.Factory.ApplyReuse(Expression serviceExpr, Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.Factory.GetDelegateOrDefault(Request request)
at DryIoc.Container.DryIoc.IResolver.Resolve(Type serviceType, Object serviceKey, IfUnresolved ifUnresolved, Type requiredServiceType, Request preResolveParent, Object[] args)
at DryIoc.Scope.TryGetOrAdd(ImMap`1 items, Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.Scope.GetOrAdd(Int32 id, CreateScopedValue createValue, Int32 disposalOrder)
at DryIoc.Factory.ApplyReuse(Expression serviceExpr, Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.ReflectionFactory.CreateExpressionOrDefault(Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.ReflectionFactory.CreateExpressionOrDefault(Request request)
at DryIoc.Factory.GetExpressionOrDefault(Request request)
at DryIoc.Factory.GetDelegateOrDefault(Request request)
at DryIoc.Container.ResolveAndCacheDefaultFactoryDelegate(Type serviceType, IfUnresolved ifUnresolved)
at DryIoc.Container.DryIoc.IResolver.Resolve(Type serviceType, IfUnresolved ifUnresolved)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
at Microsoft.Azure.WebJobs.Script.WebHost.WebJobsScriptHostService.<UnsynchronizedStartHostAsync>d__52.MoveNext()
Console message:
Azure Functions Core Tools
Core Tools Version: 4.0.4653 Commit hash: N/A (64-bit)
Function Runtime Version: 4.6.1.18388
using System.IO;
using System.Reflection.Metadata;
using System.Threading.Tasks;
using Central.Functions.FileLoader.Services.Interfaces;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
namespace Central.Functions.FileLoader.Functions
{
public class ProductLoader
{
private readonly IProductService _productService;
public ProductLoader(IProductService productService)
{
_productService = productService;
}
[FunctionName("ProductLoader")]
public async Task ProductLoaderFunction(
[BlobTrigger("%ProductBlobIncomingContainerName%/{name}", Connection = "BlobConnectionString")] Stream blobStream,
[Blob("%ProductBlobArchiveContainerName/{name}", FileAccess.Write)] Stream archiveBlob,
string name,
ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name: {name} \n Size: {blobStream.Length} Bytes");
try
{
string fileName = Path.GetFileNameWithoutExtension(name);
await _productService.ProcessFileAsync(blobStream, archiveBlob, fileName, log);
}
catch (Exception ex)
{
log.LogError($"Error processing blob: {ex.Message}");
throw;
}
}
}
}
public async Task ProcessFileAsync(Stream fileStream, Stream archiveStream, string fileName, ILogger log)
{
log.LogInformation($"Processing file asynchronously...");
using (var reader = new StreamReader(fileStream))
{
var header = await reader.ReadLineAsync();
while (!reader.EndOfStream)
{
var line = await reader.ReadLineAsync();
var values = line.Split('|');
var productLine = new ProductLine
{
ID = values[0],
Code = values[1],
Description = values[2]
};
...
}
}
}
To resolve issue tried updating Visual Studio 2022 & Azure development tools but didnt work
Issue resolved by correcting the config key (%ProductBlobArchiveContainerName%) and removing the Azure Function Tools from the system path C:\Users\user.name\AppData\Local\AzureFunctionsTools and let Visual Studio automatically install Azure Functions Core Tools