使用VS 2022的Azure Function v1与Azurite VS AzureStorageEmulator冲



VS 2022可以运行Azure Function v1函数吗?我们正试图从VS2019转移到VS2022,但Function项目未能正确运行。似乎在运行它时,我们会收到与文件名绑定相关的错误(因为它是Azure Function v1,试图解析为v2+(。

错误Microsoft.Azure.WebJobs.Host: Exception binding parameter 'filename'. Microsoft.Azure.WebJobs.Host: Binding data does not contain expected value 'filename'.

当我停止Azurite并启动AzureStorageEmulator时,它会成功运行。然而,似乎没有办法在项目中配置它。我将服务依赖项配置为使用AzureStorageEmulator,但Azurite仍在启动。它似乎忽略了AzureStorageEmulator服务依赖关系。

我们发现的唯一可靠的方法是在构建时运行一个bat文件来自动执行AzureStorageEmulator的状态/stop/start。

有没有办法将VS 2022配置为启动AzureStorageEmulator而不是Azurite?VS 2022能否正确使用Azure功能v1??

那么Azure Function V1的VS-2022配置是什么样子的呢?是host.json配置吗?互联服务?神奇的子弹是什么?

在Visual Studio 2022中运行Azure Functions v1时,在许多地方可能会出现意外错误。

  • 在Azure Functions for v1项目中使用绑定扩展时,您需要检查NuGet Tools或.NET Core CLI命令是否已弃用或从NuGet官方网站运行良好。

  • 如果它不是.NET语言,那么当您准备从V1迁移到v2或更早版本时,您需要注意扩展捆绑包。请参阅此处了解更多信息。

  • 我们在function.json文件中定义服务绑定,如Input和Output绑定,有时它会根据直接在函数类上声明绑定来自动生成该文件中的绑定代码。当在最新的环境中运行时,我们也需要注意这个文件,可能会有一些关键字更改。

  • 当您记录Function运行时,可能存在TraceWriter类,编译器告诉您使用ILogger,或者当您更新Azure Functions核心工具版本时,可能会发生一些中断更改。

我们的团队能够通过使用以下*.csproj更改更新Azure v1.x功能项目来解决此问题。该解决方案阻止Azurite启动,而是启动AzureStorageEmulator。

/Resources/Automation/Batch目录中的新StartAzureStorageEmulator.bat文件。

@echo off
cd "C:Program Files (x86)Microsoft SDKsAzureStorage Emulator"
for /f "tokens=1-2" %%i IN ('"AzureStorageEmulator.exe status"') do (
IF "%%i"=="IsRunning:" set value=%%j
)
if %value%==True "C:Program Files (x86)Microsoft SDKsAzureStorage EmulatorAzureStorageEmulator.exe" "stop"
"C:Program Files (x86)Microsoft SDKsAzureStorage EmulatorAzureStorageEmulator.exe" "start"
exit /b 0

StartDevelopmentStorage已添加到属性组。

<PropertyGroup>
<StartDevelopmentStorage>False</StartDevelopmentStorage>
</PropertyGroup>

PostBuild添加在最后一个ItemGroup节点之后的最后(引用NewStartAzureStorageEmulator.bat文件(。

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="if $(ConfigurationName) == Debug call ....ResourcesAutomationBatchStartAzureStorageEmulator.bat" />
</Target>

作为额外的好处,此修复程序还兼容VS-2019/2022。

最新更新