当前位置: 首页 > 知识库问答 >
问题:

Azure函数与netcore的外部依赖关系

艾跃
2023-03-14

我已经能够让用net core编写的Azure函数运行。我现在添加了对“WindowsAzure.存储”的引用,现在当我使用本地测试环境(“func主机启动”)时,我得到了加载体验。

我不能使用默认的表存储绑定器,因为我需要在不同的表中重新插入记录。

我使用预编译函数,正在OSX上使用VSCode进行开发。如果支持或不支持此方案,我找不到任何信息。甚至有可能让外部依赖项与Azure函数的2.0运行时一起工作吗。

本地SDK/运行时是

  • Azure功能核心工具(2.0.1-beta.21)
  • 函数运行时版本:2.0.11370.0

我的csproj文件

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.0-beta3" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="3.0.0-beta3" />
    <PackageReference Include="WindowsAzure.Storage" Version="8.6.0" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="Microsoft.CSharp" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="SearchTwitter\function.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

我职能的一部分

namespace MyProject.Functions
{
    public class SearchFunction
    {

        public async static Task Run(TimerInfo myTimer, Binder binder, TraceWriter log)
        {

            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(System.Environment.GetEnvironmentVariable("StorageConnection", EnvironmentVariableTarget.Process));
            CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
            CloudTable searchMetaDataTable = tableClient.GetTableReference("SearchMetaData");
            await searchMetaDataTable.CreateIfNotExistsAsync();

        }
 }

Function.json

{
    "bindings": [
        {
            "type": "timerTrigger",
            "direction": "in",
            "schedule": "0 */15 * * * *",
            "runOnStartup": true,
            "name": "myTimer"
        }
    ],
    "scriptFile": "../MyProject.Functions.dll",
    "entryPoint": "MyProject.Functions.SearchFunction.Run"
}

共有2个答案

笪涛
2023-03-14

对于预编译函数,WindowsAzure。存储包是Microsoft.NET.Sdk的子依赖项。函数,因此不需要单独引用它。

如果你仍然引用它,并且引用的是错误的版本,你会得到到处都是的冲突。

对于 Microsoft.NET.Sdk.Functions 的任何子依赖项,应注意此类操作。否则,完全支持引用 NuGets。

韩阳云
2023-03-14

默认情况下,Azure 存储命名空间由 Azure Functions 托管环境提供。您可以在此处找到更多详细信息:https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#referencing-external-assemblies

但是,如果这不是您想要的,请放心,您可以通过将任何外部Nuget包添加到函数的csproj文件中来使用它。有关如何执行此操作的示例,请查看此GitHub存储库中的示例代码https://github.com/lindydonna/CSharpHttpCore/blob/master/HttpTriggerCore/HttpTriggerCore.csproj

 类似资料:
  • 我的pom.xml 错误:

  • 我有一个时间触发的Azure功能

  • 我需要在我的maven项目中添加大约15个罐子,它在远程和中央存储库中都不可用。 然而,我实现了以下目标:, > 在我的项目路径中添加了jars(\src\lib) 将pom更改如下, 我的问题是: 我是否需要像上面那样分别对所有15个JAR重复它,或者我们有任何其他方法来绑定这些JAR并将其作为一个依赖路径? Maven在这里讨论了同样的事情:指向多个JAR的系统依赖性。但我想知道我是否能得到更

  • 我有一个关于 azure 函数 v1 中的依赖注入的新问题。 实际情况: 我有一个azure函数V1,我想在其中引用我的业务服务,而无需重新发明轮子即可使用我的服务。我在Internet上搜索并找到了这篇来自Microsoft的有趣文章。 但是,它似乎只适用于azure函数v2(. net core),因为每当我尝试安装时,我总是收到以下错误: 检测到Microsoft.Azure.WebJobs

  • 我熟悉使用make构建大型应用程序,但现在我已经开始使用Android Studio,我想了解如何在Makefile中完成我已经做过的事情。 下面是一个可能有助于您确定答案的示例: Makefile示例:(极简主义) 更简单的例子: 在Gradle怎么做? 我想解决上面示例中提到的外部依赖关系。实际上,我是通过“make”来实现的,但我想完全删除这个额外的步骤。

  • 我正在使用Azure函数v3和DI。我有一个服务,我在启动时设置了一个短暂的生命周期。cs(使用: