Azure Functions 在 bin

问题描述 投票:0回答:5

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

.net azure dll visual-studio-2017 azure-functions
5个回答
2
投票

我尝试读取类似这样的文件 File.ReadAllText(@"FolderName\FileName.json") 但是当函数执行时它给出错误 - 无法找到路径的一部分 'D:\Windows\system32\FolderName\FileName .json'.

我已经检查了这个问题,发现你的代码可以在本地正确运行,但在部署到 azure 端后失败了。您可能需要显式设置绝对路径来读取您的 json 文件。您可以利用 Microsoft.Azure.WebJobs.ExecutionContext.FunctionDirectory 获取当前函数目录(例如

D:\home\site\wwwroot\<FunctionName>
用于 Azure 端,
C:\Users\xxx\FunctionApps\bin\Debug\net461\<FunctionName>
用于本地端)。您可以关注的详细信息检索有关当前正在运行的功能的信息.

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

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

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


1
投票

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

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

  • \FunctionAppName.sln
  • \FunctiaonAppName\FunctiaonAppName.csproj
  • \主机.json
  • \localsetting.json
  • \函数.cs

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

  • 在\调试 et461\函数unction.json
  • 在\调试 unctionRelatedBinaries.dll 中的 et461
  • host.json

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

你能帮我理解引用具有这种结构的 JSON / XML 文件是如何变得困难的吗?在上述情况下,您可以简单地假设 net461 是项目输出的根目录,并且所有 xml / json 文件都将存在于那里。


1
投票

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

将文本文件嵌入 dll

然后从dll中读取内容


1
投票

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


0
投票

我发现了类似的问题,并观察到在构建函数应用程序时创建了另一个 bin 文件夹,如下所示

这导致以下错误: System.Private.CoreLib:无法加载文件或程序集“Microsoft.Azure.WebJobs.Extensions.Http,Version=3.2.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”。 系统找不到指定的文件。 Microsoft.Azure.WebJobs.Extensions.Http.dll

它在文件夹 bin>deubug>net6.0>bin 中寻找文件,但文件存在于上层 bin 文件夹中。 我知道这不是永久解决方案,因为我手动将文件复制到其他文件。它解决了这个问题和工作。 如果有人知道解决方案而不是手动复制会有所帮助。谢谢。

以下我用于功能应用程序的参考资料

<PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.21.0" /> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.3" /> <PackageReference Include="System.Data.SqlClient" Version="4.6.1" />

© www.soinside.com 2019 - 2024. All rights reserved.