【发布时间】: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