Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Azure函数在bin中创建另一个bin文件夹_.net_Azure_Dll_Visual Studio 2017_Azure Functions - Fatal编程技术网

.net Azure函数在bin中创建另一个bin文件夹

.net Azure函数在bin中创建另一个bin文件夹,.net,azure,dll,visual-studio-2017,azure-functions,.net,Azure,Dll,Visual Studio 2017,Azure Functions,我面临一个问题,Azure函数看到另一个bin文件夹正在bin中创建。所以文件夹结构类似于bin->net461->bin->dll。但是,项目中的任何其他文件(json、xml)都会复制到bin->net461。由于这种情况,代码中对文件(json、xml)的引用变得很困难。我不需要另一个bin文件夹。如何修复此问题?您正在体验的是默认行为。阐述了通过VisualStudio创建的功能项目的结构 以下文件是functions项目的一部分。这里的文件是由VS生成的或由用户创建的实际代码文件 \

我面临一个问题,Azure函数看到另一个bin文件夹正在bin中创建。所以文件夹结构类似于bin->net461->bin->dll。但是,项目中的任何其他文件(json、xml)都会复制到bin->net461。由于这种情况,代码中对文件(json、xml)的引用变得很困难。我不需要另一个bin文件夹。如何修复此问题?

您正在体验的是默认行为。阐述了通过VisualStudio创建的功能项目的结构

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

  • \FunctionappName.sln
  • \FunctionappName\FunctionappName.csproj
  • \host.json
  • \localsetting.json
  • \Function.cs
以下文件由编译或构建功能项目生成。此处的文件将按照发布步骤部署到Azure

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


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

您的解决方法可能是将文件嵌入到dll中

然后从dll中读取内容

我尝试读取类似以下file.ReadAllText(@“FolderName\FileName.json”)的文件,但当函数执行时,会出现错误-找不到路径“D:\Windows\system32\FolderName\FileName.json”的一部分

我检查了这个问题,发现您的代码可以在本地端正常工作,但部署到azure端后失败。您可能需要显式设置绝对路径来读取json文件。您可以利用Microsoft.Azure.WebJobs.ExecutionContext.FunctionDirectory获取当前函数目录(例如
D:\home\site\wwwroot\
对于Azure端,
C:\Users\xxx\functionpps\bin\Debug\net461\
对于本地端)。你可以关注细节

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

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

此外,您可以遵循这个github和这个。

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

您使用的是哪个版本的function Sdk?是为了调试/发布定义吗?问题是当我在azure中部署函数应用程序时。我尝试读取类似以下file.ReadAllText(@“FolderName\FileName.json”)的文件,但当函数执行时,会出现错误-找不到路径“D:\Windows\system32\FolderName\FileName.json”的一部分。如果我使用当前正在执行的程序集,然后找到相对路径,它也不起作用,因为文件在bin->net461->folderName->file中,而当前正在执行的程序集是bin->net461->bin->functionppname.dll