2017-11-18 105 views
1

我終於設法讓我的function.json文件生成大多數正確的屬性。我仍然遇到的唯一問題是scriptFile路徑設置爲錯誤的值。Azure函數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編譯/發佈生成一個文件回聲/ 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" 
} 
+1

這很奇怪。顯示有關您的項目設置的更多細節。 – Mikhail

+0

添加了更多信息 – Craigt

+1

嗯,複製粘貼你的文件,但建立/發佈產生'../ bin'就好了。是否所有4個文件在沒有子文件夾的同一文件夾中? – Mikhail

回答