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

时间:2017-02-01 17:26:49

标签: c# azure msbuild csproj azure-functions

在最新的Azure SDK的帮助下,我获得了Visual Studio的Azure功能工具 这样我就可以在内部调试我的Azure功能 - 很酷。

我的azure函数需要使用Business对象的代码

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

#r  "ServiceBusQueue.Shared.dll"

Azure功能项目中没有“添加引用...”。 我只能添加一个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目录中。

是否有更集成/更清洁的方式来做这样的事情?

2 个答案:

答案 0 :(得分:7)

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

或者,您可以在类库中添加构建后步骤。转到属性 - &gt;构建事件 - &gt;构建后事件命令行并添加xcopy /Y $(TargetPath) $(SolutionDir)FunctionApp1\bin

之类的内容

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

答案 1 :(得分:0)

我知道这是一个老问题,但是我刚刚在VS 2019中遇到了这个问题,因此对于其他任何正在寻找的人:您可以在引用的项目的属性中将“复制本地”设置为“是”。

在解决方案资源管理器中,打开依赖项| “功能”项目下的“项目” 节点,右键单击引用的项目,选择“属性”,并将“复制本地”设置为“是”。这会将引用项目的DLL复制到您的Functions项目的输出目录,这将导致该DLL包含在已部署的程序包中。