azure-functionsrider

Unable to run Azure Functions project locally in Rider after adding plugins


I added some plugins so I could work with Azure Functions + Azure Service Bus, and since have been unable to run functions locally through Rider.

I tried:

But these didn't work.

I encounter this error when pressing the button to Run the local Azure function configuration:

System.Private.CoreLib: Exception has been thrown by the target of an invocation. Microsoft.Azure.WebJobs.Extensions.Storage.Queues: Could not load file or assembly 'System.Memory.Data, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
Value cannot be null. (Parameter 'provider')

And I encounter this error when trying to run it directly from func.exe:

C:\Users\mail\.AzureToolsForIntelliJ\AzureFunctionsCoreTools\v4\4.104.0\func.exe host start --verbose --pause-on-error --port 7070
MSBuild version 17.8.3+195e7f5a3 for .NET
...
...
...
FUNCTIONS_INPROC_NET8_ENABLED app setting is not enabled in local.settings.json
Selected inproc6 host.
This version of the Azure Functions Core Tools requires your project to reference version 4.5.0 or later of Microsoft.NET.Sdk.Functions. Please update to the latest version. For more information, see: https://aka.ms/functions-core-tools-in-proc-sdk-requirement

This is odd because it's suggesting that my Microsoft.NET.Sdk.Functions is out of date. However, looking at .csproj, it is not:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <AzureFunctionsVersion>v4</AzureFunctionsVersion>
        <RootNamespace />
    </PropertyGroup>
    <PropertyGroup Condition="'$(Configuration)' == 'Release'">
        <RuntimeIdentifier>win-x86</RuntimeIdentifier>
        <PublishReadyToRun>true</PublishReadyToRun>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Azure.Messaging.ServiceBus" Version="7.18.2" />
        <PackageReference Include="Azure.Storage.Queues" Version="12.21.0" />
        <PackageReference Include="Microsoft.Azure.Cosmos" Version="3.46.0-preview.2" />
        <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
        <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="5.16.4" />
        <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage.Queues" Version="5.3.3" />
        <PackageReference Include="Microsoft.Extensions.Configuration.AzureAppConfiguration" Version="8.1.0-preview" />
        <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.6.0" />
        <PackageReference Include="PlayFabAllSDK" Version="1.192.241108" />
        <PackageReference Include="Sentry.AspNetCore" Version="4.13.0" />
        <PackageReference Include="Sentry.Extensions.Logging" Version="4.13.0" />
        <PackageReference Include="SharpZipLib" Version="1.4.2" />
        <PackageReference Include="System.Memory" Version="4.6.0" />
    </ItemGroup>
    <ItemGroup>
        <None Update="host.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="local.settings.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
            <CopyToPublishDirectory>Never</CopyToPublishDirectory>
        </None>
    </ItemGroup>
</Project>

This is the func.exe version:

C:\Users\mail\.AzureToolsForIntelliJ\AzureFunctionsCoreTools\v4\4.104.0\func.exe --version                              
4.0.6610

Any pointers would be appreciated 🙏


Solution

  • <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
            <TargetFramework>net8.0</TargetFramework>
            <AzureFunctionsVersion>v4</AzureFunctionsVersion>
            <RootNamespace>_79189045</RootNamespace>
        </PropertyGroup>
        <ItemGroup>
            <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="5.16.4" />
            <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.6.0" />
        </ItemGroup>
        <ItemGroup>
            <None Update="host.json">
                <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
            </None>
            <None Update="local.settings.json">
                <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
                <CopyToPublishDirectory>Never</CopyToPublishDirectory>
            </None>
        </ItemGroup>
    </Project>
    

    Also, FUNCTIONS_INPROC_NET8_ENABLED set to 1 in local settings file.

    {
        "IsEncrypted": false,
        "Values": {
            "AzureWebJobsStorage": "UseDevelopmentStorage=true",
            "FUNCTIONS_INPROC_NET8_ENABLED": "1",
            "FUNCTIONS_WORKER_RUNTIME": "dotnet",
            "ServiceBusConnectionString": "Endpoint=sb://afreensb.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=95Gb*****tTJM4="
        }
    }
    

    By doing the given changes, you can run the service bus triggered function locally in Rider.

    Azure Functions Core Tools
    Core Tools Version:       4.0.6518 Commit hash: N/A +74ed9095fdd6c5326276aae6b8a7d41ccbdeb6aa (64-bit)
    Function Runtime Version: 4.35.4.23179
    
    [2024-11-15T10:51:45.180Z] Found C:\Users\*****\RiderProjects\79189045\79189045\79189045.csproj. Using for user secrets file configuration.
    
    Functions:
    
            ServiceBusTriggeredFunction: serviceBusTrigger
    
    For detailed output, run func with --verbose flag.
    [2024-11-15T10:52:58.126Z] Executing 'ServiceBusTriggeredFunction' (Reason='(null)', Id=b4f30256-77aa-4469-be01-72b4e7a12283)
    [2024-11-15T10:52:58.130Z] Trigger Details: MessageId: 3c75615a8f3c4bc3939c7da0db414d40, SequenceNumber: 1, DeliveryCount: 1, EnqueuedTimeUtc: 2024-11-15T10:52:57.2600000+00:00, LockedUntilUtc: 2024-11-15T10:53:57.2760000+00:00, SessionId: (null)
    [2024-11-15T10:52:58.147Z] C# ServiceBus queue trigger function processed message: Hi, This is a test message
    [2024-11-15T10:52:58.173Z] Executed 'ServiceBusTriggeredFunction' (Succeeded, Id=b4f30256-77aa-4469-be01-72b4e7a12283, Duration=100ms)