c# - 如何将文件复制到 Azure Function bin 文件夹中?

标签 c# asp.net-core azure-functions system.configuration netcoreapp3.1

背景:
我有一个在 netcoreapp3.1 和 azure 版本 v3 中运行的 Azure 函数 C# 项目。这是 csproj 的一个片段...

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AssemblyName>someproj</AssemblyName>
    <RootNamespace>someproj</RootNamespace>
    <Product>someproduct</Product>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
    <RunPublishAfterBuild>true</RunPublishAfterBuild>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.ApplicationInsights" Version="2.15.0" />
    <PackageReference Include="Microsoft.Applications.Telemetry.Server">
      <Version>1.1.264</Version>
      <NoWarn>NU1701</NoWarn>
    </PackageReference>
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0-preview.8.20407.11">
      <NoWarn>NU1701</NoWarn>
    </PackageReference>
  </ItemGroup>
</Project>
运行后异常:
'Could not load file or assembly 'System.Configuration.ConfigurationManager, 
 Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one 
 of its dependencies. The system cannot find the file specified.'
疑似原因:
问题是在通过 Visual Studios 构建 azure 函数时,它会创建以下文件夹结构。 (原谅我可怕的插图)
bin/
 | - Debug/
 | | -bin / 
 | | | runtimes/
 | | - function1/
 | | | - ...
...
---
System.Configuration.ConfigurationManager.dll 位于 Debug/文件夹中,而不是二级 bin 文件夹中。在构建并查看相应的 dll 文件时,我可以看到它正在填充在第二个 bin 文件夹中,但稍后在 Azure Function Projects 启动之前被删除。
现在,当我关闭本地运行时,将 System.Configuration.ConfigurationManager.dll 添加回第二个 bin 文件夹,一切正常!
实际问题 (请帮忙!)
问题 1:有没有办法明确告诉 Visual Studio 将 dll 输出到第二个 bin 文件夹中?我已经尝试了以下...
  • GeneratePathProperty="true"
  • COPY_PASS0
  • 所有计算器溢出

  • 问题 2:有没有更好的方法来引用这个必需的 dll?我已经尝试过 nuget 控制台,但没有运气。
    谢谢大家的帮助!

    最佳答案

    任务,RemoveRuntimeDependencies,由目标运行,_FunctionsBuildCleanOutput,是 known to purge assemblies too aggressively .
    解决方法是通过设置完全关闭任务(并接受更大的部署):

    <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
    
    跟踪工作项以获得更精细的切换:https://github.com/Azure/azure-functions-host/issues/5894

    关于c# - 如何将文件复制到 Azure Function bin 文件夹中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63948205/

    相关文章:

    Azure 功能更好地直接调用我的 API 进行 sql server 数据库访问或使用我的 azure API

    azure - 组织函数应用程序从 azure devops 进行部署 - 管道 CI/CD

    azure - 由于未设置连接字符串,无法运行 azure 函数并出现错误

    c# - 调用任务后丢失 [ThreadStatic] 值

    C# ASP.NET 是否有替代方法来对每个 Controller 操作重复进行错误检查

    c# - 使用 protobuf-net 序列化基类属性

    c# - 用 Servicestack.Text 重构类型对象的属性

    asp.net-core - 引用UWP和ASP.NET 5中的类库

    c# - ASP.NET 4 路由问题

    c# - 我可以在 ASP.NET Core 中使用 Content Negotiation 向浏览器返回 View 并向 API 调用返回 JSON 吗?