【问题标题】:Azure functions publish does not copy all filesAzure 函数发布不会复制所有文件
【发布时间】:2020-09-16 07:59:44
【问题描述】:

当我将我的 azure 函数发布到 azure 时,并非所有引用的包都被复制。因此,我收到一条错误消息,指出找不到特定文件 (Microsoft.CodeAnalysis.dll)。

我已确保在我的 azure 函数项目中引用了该包:

并检查它是否在 .csproj 文件中:

当我在本地构建时,该文件包含在 \bin 目录中:

但是当我发布到天蓝色时,文件丢失了:

这会在引用文件时出现运行时错误:

如何强制将文件包含在发布到 azure 中,在 Visual Studio 的这种情况下,没有“复制到输出目录”或类似选项:

【问题讨论】:

  • 你用什么方法发布?右键单击项目并选择“发布”,通过 CLI 或其他方法压缩部署?
  • 我右键单击项目并选择“发布”。发布配置文件是通过从 azure 门户下载创建的。因此,它是一个“Web”发布配置文件(与 zip 部署相对)
  • 不幸的是,这些很难重现。首先要检查的是您是否在发布尝试之前没有停止应用程序。所以停止-> 发布-> 开始。在站点运行时发布有时会产生意想不到的副作用。在 Build Output 窗口中还有一个地方可以检查文件的遗留位置。在 Web Deploy 中,它应该输出它正在更改的所有文件。下一步是尝试部署到新的 Functions App 以查看问题是否一致。
  • 要尝试的另一件事是使用 zip deploy。我知道这可能不是您长期想要的,但它可以告诉您问题出在哪里。 Zip 部署是从 Visual Studio 构建发布配置文件时的默认选项,或者您可以尝试从 https://.scm.azurewebsites.net/ZipDeployUI 手动部署。
  • 在本地运行函数应用和在 Azure 中运行它一定存在一些框架差异。在编译函数应用程序并在本地运行它时,不需要 Microsoft.CodeAnalysyis.dll 文件,因此从未包含在我的项目中。只有当我尝试在 azure 中运行它时,它才会尝试加载文件并给出错误。这就是为什么我在我的项目中包含了对这个包的引用,即使在本地运行时不需要它。也许这就是为什么我发布到 azure 时不包含它的原因?

标签: visual-studio azure azure-functions nuget-package publish


【解决方案1】:

此问题在 Azure Functions (.NET 5.0) 中已解决,但在 .NET Core 3.1 中使用

  <PropertyGroup>                         
           <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>     
  </PropertyGroup>

在 Azure Functions 的项目文件中作为解决方法。详情请查看https://github.com/Azure/Azure-Functions/issues/1525

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    相关资源
    最近更新 更多