【问题标题】:The 'dotnet publish' command line skips deployment to Azure Functions“dotnet publish”命令行跳过部署到 Azure Functions
【发布时间】:2018-10-29 14:48:22
【问题描述】:

我正在为我的站点设置一些 DevOps,到目前为止,我已成功使用以下命令在两个 ASP.NET Core 应用上进行部署:

dotnet publish ProjectName.csproj /p:PublishProfile="PublishProfileName" /p:Password=password

我刚刚使用 V2 运行时和 .NET Core 2.1 创建了一个 Azure 函数,正如对所有新项目的建议(请参阅此处 https://azure.microsoft.com/en-us/blog/introducing-azure-functions-2-0/),但如果我使用相同的命令,我发现它只会发布它到本地文件夹,似乎没有将项目部署到 Azure。

如果我使用 MSBuild 等价物,它似乎也错过了部署阶段。

我猜测它在某种程度上与项目类型有关,没有适当的构建目标,但我不确定如何进一步跟踪。

我可以从 Azure 下载发布设置,将它们导入 Visual Studio 并通过 VS 发布,所以看起来如果 VS 路径有效,这可能是某处工具中的回归或错误,而不是不受支持的东西?

我正在使用:

  • Visual Studio 15.8.8 +28010.2048
  • Azure Functions 和 Web 作业工具 15.9.02046.0

如果我不应该将 dotnet publish 与 Azure 函数一起使用,我应该使用什么来代替命令行 CD?我已经看到对 Azure Function CLI 工具的引用,但如果可以通过其他工具完成,我宁愿不必在我们的构建代理上安装包管理器。

【问题讨论】:

  • 如果从 VS 发布工作,那么只需使用 MSBuild 进行部署。这就是我发布函数的方式。 msbuild /p:DeployOnBuild=True /p:PublishProfile=somename.pubxml /p:Configuration=Release
  • @Svend,感谢命令行。看,这是奇怪的事情,我尝试了你的命令行,但它似乎仍然跳过了实际部署到天蓝色。 MSBuild 的最后一条日志是它到达 Publish 将其输出到本地文件夹,然后 _GenerateFunctionsAndCopyContentFiles 似乎移动了更多文件夹,然后完成。当然这意味着我的 Visual Studio 版本中存在错误/回归?我会重新安装,但我真的没有那么多空闲时间! :)
  • @Svend,更奇怪的是,我正在创建一个 repro 来记录针对 MSBuild 或 VS 的问题,似乎如果我在新解决方案中创建一个干净的函数项目,命令行就可以工作。如果我在现有解决方案的新项目中使用相同的命令行,则会跳过部署!我猜想到达某个地方。
  • 您很可能在 csproj 文件中存在问题。尝试比较项目文件,看看其中一个是否缺少某些内容。如果您正在处理“合法”的 msbuild/vs 错误,我会吃掉我的帽子。
  • 顺便说一句,csproj 文件相同(或足够相似)。同样的 NuGet 包和版本控制。

标签: c# azure .net-core azure-functions


【解决方案1】:

最后,在答案和 cmets 的帮助下(谢谢大家),我有一个正在部署我的 .NET Core 2.1 Function 项目的 MSBuild 命令行:

msbuild /p:DeployOnBuild=True /p:PublishProfile=somename.pubxml /p:Configuration=Release

然而,值得注意的是:

一般 .NET Core 发布说明

  1. 如果您拼错发布配置文件名称,它将静默跳过部署(无警告或错误)。

ASP.NET Core 和 .NET Core Functions 部署的区别

  1. 如果您使用“dotnet publish”,它将始终跳过部署。

  2. 如果您不指定 /p:DeployOnBuild=True,它将跳过部署。

【讨论】:

  • 通常如果您想使用 DeployOnBuild 属性,您可能只想为 specific project, instead of ALL eligible projects 调用它。是的,MSBuild 不是“用户友好的”。这是 VS.IDE 在 UI 下使用的东西,所以它非常有能力(并且值得学习 IMO)
【解决方案2】:

如果您不想在构建代理上使用“包管理器”,则必须选择对函数应用进行 zip 部署。详细信息可以在此处的 MSDN 上找到:

https://docs.microsoft.com/en-us/azure/azure-functions/deployment-zip-push#rest

【讨论】:

  • 感谢链接,我想我是顺便看到的,但我会再看一下。奇怪的是,它提到“Azure Functions 具有 Azure 应用服务提供的全方位持续部署和集成选项。”。在我的情况下似乎不是,因为相同的部署命令行不起作用。 :)
【解决方案3】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 2020-05-13
  • 2021-02-10
  • 2015-05-28
  • 1970-01-01
  • 2011-05-01
相关资源
最近更新 更多