You need to enable JavaScript to run this app. Azure Function App 跨函数调用dll免每次重新构建的解决方案咨询
优惠活动
大模型
产品
解决方案
定价
更多

Azure Function App 跨函数调用dll免每次重新构建的解决方案咨询

可行解决方案

方案1:将Function1打包为NuGet包,配置自动更新发布流程

  • 把Function1的公共逻辑抽离为独立类库项目,每次迭代后打包成NuGet包,推送到私有NuGet源(如Azure Artifacts、内部私有源均可)
  • 在Function2的项目文件中配置NuGet包浮动版本规则,示例配置:
<PackageReference Include="Function1公共类库包名" Version="1.*" />
  • 配置Function2的CI/CD流水线触发规则:只要Function1的NuGet包有新版本推送,自动触发Function2的构建发布,全程无需人工操作。

方案2:运行时动态加载Function1 DLL

  • 将编译好的Function1 DLL上传到统一的固定存储位置,比如Function App对应的共享存储目录D:\home\site\wwwroot\sharedlibs,或者Azure Blob Storage的固定路径
  • 修改Function2的调用逻辑,改为运行时动态加载DLL而非编译时静态引用,C#示例代码片段:
var dllPath = @"D:\home\site\wwwroot\sharedlibs\Function1.dll";
var targetAssembly = Assembly.LoadFrom(dllPath);
var targetType = targetAssembly.GetType("Function1.你的目标类名");
var classInstance = Activator.CreateInstance(targetType);
var targetMethod = targetType.GetMethod("你的目标方法名");
var result = targetMethod.Invoke(classInstance, new object[] { 方法入参 });
  • 每次迭代Function1后,仅需要将新生成的DLL覆盖上传到对应存储位置,重启Function2实例即可生效,无需重新构建发布Function2项目。

注意:动态加载需要提前处理好版本兼容、依赖项冲突问题,建议将Function1的所有依赖DLL也同步放到共享目录下。

方案3:服务调用解耦

  • 取消DLL直接引用,改为Function2通过HTTP触发器、队列触发器或者Durable Functions活动函数的方式,直接调用Function1的运行服务
  • Function1独立迭代发布即可,完全不需要修改或发布Function2,两个服务完全解耦。

内容的提问来源于stack exchange,提问作者Ukstest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 17:06:03