Azure 函数 function.json 生成的 scriptFile 路径不正确

Posted

技术标签:

【中文标题】Azure 函数 function.json 生成的 scriptFile 路径不正确【英文标题】:Azure functions function.json generates with incorrect scriptFile path 【发布时间】:2017-11-18 08:39:36 【问题描述】:

我终于设法让我的 function.json 文件生成了大部分正确的属性。我仍然在努力解决的唯一问题是 scriptFile 路径如果设置为错误的值。

它使用“bin/MyFunctions.dll”而不是“../bin/MyFunctions.dll”的值生成。无论我是构建还是发布,都会发生这种情况。

当我尝试运行脚本主机时出现错误:

The following 1 functions are in error:
Echo: Invalid script file name configuration. The 'scriptFile' property is set to a file that does not exist.

手动将值更改为“../bin/MyFunctions.dll”即可解决问题。

csproj 文件

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <NoWarn>NU1701</NoWarn>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.0.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.0-beta3" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.6" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="Microsoft.CSharp" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

EchoFunction.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Linq;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;

namespace EchoFunctionNameSpace

    public class EchoFunction
    
        [FunctionName("Echo")]
        public static IActionResult Run(
            [HttpTriggerAttribute(AuthorizationLevel.Anonymous, "get", Route = "name/name/sname/sname")] 
            HttpRequest req, TraceWriter log, string name, string sname)
        
            log.Info("C# HTTP trigger function processed a request.");

            return new OkObjectResult($"Hello name sname");
        
    

host.json


local.settings.json


    "IsEncrypted": false,
    "Values": 
        "AzureWebJobsStorage": "",
        "AzureWebJobsDashboard": ""
    

这是我仅有的 4 个文件。 dotnet build/publish 生成一个文件 Echo/function.json,如下所示:


  "generatedBy": "Microsoft.NET.Sdk.Functions.Generator-1.0.6",
  "configurationSource": "attributes",
  "bindings": [
    
      "type": "httpTrigger",
      "route": "name/name/sname/sname",
      "methods": [
        "get"
      ],
      "authLevel": "anonymous",
      "name": "req"
    
  ],
  "disabled": false,
  "scriptFile": "bin/AzureFunctions.dll",
  "entryPoint": "EchoFunctionNameSpace.EchoFunction.Run"

【问题讨论】:

这很奇怪。显示有关您的项目设置的更多详细信息。 添加了更多信息 嗯,复制粘贴了您的文件,但构建/发布生成 ../bin 就好了。所有 4 个文件都在同一个文件夹中,没有子文件夹吗? 您没有最新的工具或 NuGet 包吗?检查工具/扩展和更新,以及项目的 NuGet。 所有四个文件都在同一个文件夹中,没有子文件夹。我正在使用 SDK 的 v1.0.6 和 cli 工具的 2.0.1-beta.21。据我所知,它们是最新版本?无法深究... 【参考方案1】:

我在 SDK 函数生成器代码中发现了一个我认为是错误的地方。我已经在这里提交了一个拉取请求来尝试解决它:

https://github.com/Azure/azure-functions-vs-build-sdk/pull/143

【讨论】:

以上是关于Azure 函数 function.json 生成的 scriptFile 路径不正确的主要内容,如果未能解决你的问题,请参考以下文章

Azure的功能 - function.json位于何处?

在 Azure Function 中覆盖 function.json 的问题

如何在function.json中设置isSessionsEnabled = true?

在哪里可以找到 Azure 函数的代码?

服务总线输出绑定在 Azure 中不起作用

通过 C# Azure 函数生成 Blob 容器