如何添加对 Azure Function C# 项目的引用?

How to add a reference to an Azure Function C# project?

在最新的 Azure SDK 的帮助下,我得到了 Visual Studio 的 Azure Function 工具 这样我就可以在本地调试我的 Azure Functions - 太棒了。

我的 azure 函数需要使用业务对象 dll 的代码

从 .csx 脚本我可以在开始时使用这样的指令引用 .dll

#r  "ServiceBusQueue.Shared.dll"

Azure 函数项目中没有 "Add reference..."。 我只能添加 Build 依赖项,以便首先构建业务对象 dll。

但是当 dll 代码更新时,没有将 dll 输出复制到我的 azure 函数目录的 bin 中。 在网络上发布是可以的 这是为了在本地调试会话中使用最新的业务对象代码所必需的。

因为 Azure 函数项目中没有 Prebuild 事件选项卡, 我找到的解决方案是在 Function App 项目

中写一个 Prebuild event

.funproj 文件

<Target Name="BeforeBuild">
    <Message Text="Copying dlls into Azure Function ..." />
    <Exec Command="Call CopyDlls.cmd $(Configuration)" />
</Target>

批处理文件:

rem %1 is the configuration, debug or release
echo %1
mkdir .\ServiceBusQueueTriggerCSharp\bin
copy ..\ServiceBusQueue.Shared\bin\%1\*.* .\ServiceBusQueueTriggerCSharp\bin
rem DOS subtlety : test than return code is equal or greater than 1
rem : make the compilation to fail
if errorlevel 1 exit /b 1

这样dll就复制到Azure Function项目的bin目录下了。

有没有更多的integrated/cleaner方法来做这样的事情?

不幸的是,如您所见,最好的解决方法是在 funproj 文件中使用 MSBuild 目标。

或者,您可以将 post-build 步骤添加到 class 库中。转到 Properties -> Build Events -> Post-build event command line 并添加类似 xcopy /Y $(TargetPath) $(SolutionDir)FunctionApp1\bin.

的内容

但是,VS 工具团队正在努力为未来版本的函数工具添加参考功能。参见 https://github.com/Azure/Azure-Functions/issues/90

我知道这是一个老问题,但我只是 运行 解决了 VS 2019 的这个问题,所以对于任何前来寻找的人:您可以在引用的项目中将 "Copy Local" 设置为是属性。

在解决方案资源管理器中,打开 依赖项 |在你的Functions项目下的Projects节点,右键点击引用的项目,select属性,将"Copy Local"设置为是。这会将引用项目的 DLL 复制到 Functions 项目的输出目录,这会导致该 DLL 包含在部署的包中。