在最新的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目录中。
是否有更集成/更清洁的方式来做这样的事情?
答案 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包含在已部署的程序包中。