Azure函数在bin

时间:2018-05-12 02:14:32

标签: .net azure dll visual-studio-2017 azure-functions

我遇到Azure功能的问题,看到在bin中创建了另一个bin文件夹。所以文件夹结构就像这个bin - > net461 - > bin - > dll的。但是项目中的任何其他文件(json,xml)都会被复制到bin - > net461。由于这种对文件的引用(json,xml)在代码中变得很困难。我不需要另一个bin文件夹。如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

  

我尝试读取类似File.ReadAllText(@" FolderName \ FileName.json")的文件,但是当函数执行时会出错 - 无法找到路径的一部分' d:\ Windows \ System32下\文件夹\ FileName.json'

我已经检查了这个问题,发现你的代码可以在本地端正常工作但在部署到azure端后失败了。您可能需要显式设置绝对路径以读取您的json文件。您可以利用 Microsoft.Azure.WebJobs.ExecutionContext.FunctionDirectory 来获取当前的功能目录(例如,对于Azure端D:\home\site\wwwroot\<FunctionName> ,对于本地端C:\Users\xxx\FunctionApps\bin\Debug\net461\<FunctionName>。您可以关注的详细信息Retrieving information about the currently running function

读取json文件的代码如下所示:

File.ReadAllText(Path.Combine(Directory.GetParent(executionContext.FunctionDirectory).FullName,@"helloworld.json"));

此外,您可以关注此github issue和此tutorial

答案 1 :(得分:1)

当我从 1.0.38 升级到 Microsoft.NET.Sdk.Functions 3.0.11 时,我开始遇到这个问题。它帮助我将 Microsoft.NET.Sdk.Functions 降级到 3.0.1。

答案 2 :(得分:0)

您遇到的是默认行为。详细说明通过Visual Studio创建的函数项目的结构。

以下文件是函数项目的一部分。这里的文件是VS生成的实际代码文件,或者由用户创建。

  • \ FunctiaonAppName.sln
  • \ FunctiaonAppName \ FunctiaonAppName.csproj
  • \ host.json
  • \ localsetting.json
  • \ Function.cs

通过编译或构建函数项目生成以下文件。此处的文件将按照发布步骤部署到Azure。

  • \ BIN \调试\ net461 \功能\ function.json
  • \ BIN \调试\ net461 \ BIN \ functionRelatedBinaries.dll
  • host.json

构建步骤实际上获取了功能应用程序在azure中成功运行所需的所有必需二进制文件,并将它们复制到内部bin文件夹。内部bin文件夹还包含按功能引用的所有外部二进制文件,例如Newtonsoft.Json。 net461的内容需要部署到azure才能在云上运行。

您能否帮我理解如何使用此结构引用JSON / XML文件变得困难。在上面的例子中,你可以简单地假设net461是项目输出的根,所有的xml / json文件都会出现在那里。

答案 3 :(得分:0)

也许你的解决方法是将文件嵌入到dll中。

official sample

然后从dll中读取内容。