.net Azure函数在bin中创建另一个bin文件夹
我面临一个问题,Azure函数看到另一个bin文件夹正在bin中创建。所以文件夹结构类似于bin->net461->bin->dll。但是,项目中的任何其他文件(json、xml)都会复制到bin->net461。由于这种情况,代码中对文件(json、xml)的引用变得很困难。我不需要另一个bin文件夹。如何修复此问题?您正在体验的是默认行为。阐述了通过VisualStudio创建的功能项目的结构 以下文件是functions项目的一部分。这里的文件是由VS生成的或由用户创建的实际代码文件.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生成的或由用户创建的实际代码文件 \
- \FunctionappName.sln
- \FunctionappName\FunctionappName.csproj
- \host.json
- \localsetting.json
- \Function.cs
- \bin\Debug\net461\Function\Function.json
- \bin\Debug\net461\bin\functionRelatedBaries.dll
- host.json
你能帮助我理解用这种结构引用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