Azure 上的 .NET Core 2 控制台应用程序依赖项问题

.NET Core 2 Console App Dependencies Issue on Azure

问题的简短版本:

我在包含我的 .NET Core 控制台应用程序所依赖的程序集时遇到困难。

最初,来自 NuGet 程序包的程序集未包含在 bin 文件夹中,即使我可以 运行 应用程序在 Debug 模式下没有任何问题。

发现一篇文章建议我应该在我所做的 myapp.csproj 文件中添加 <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

这样做包括 bin 文件夹中 NuGet 包的 dll 文件但是在我将我的控制台应用程序作为 WebJob 复制到 Azure 到 运行 之后,我得到了一个错误告诉我 System.Data.SqlClient 不见了。

检查 WebJob 运行 所在的文件夹后,我可以看到 System.Data.SqlClientdll 实际上在该文件夹中。我得出结论,这可能是版本号的问题。错误指示如下:

'System.Data.SqlClient', version: '4.4.2' was not found

当我右键单击此程序集的 dll 文件并检查其版本时,它显示版本 4.6。

知道如何解决这个问题吗?

更长的版本:

我将此 .NET Core 2.0 控制台应用构建为 运行 作为 WebJob,遵循这篇文章:http://matt-roberts.me/azure-webjobs-in-net-core-2-with-di-and-configuration/

我必须手动创建此 WebJobs 应用程序,因为目前 Visual Studio 不提供在 .NET Core 中构建 Azure WebJobs 的方法。

由于当前的限制,我也无法直接从 Visual Studio 发布我的 WebJobs 应用程序。

因此,我尝试将其压缩并通过 Azure 门户上传。这是我意识到 NuGet 程序集未包含在 bin 文件夹中的时候。故事的其余部分已经出现在 "Short Version" 部分。

对于解决此问题的一些建议,我将不胜感激。

更新:

当我 运行 dotnet publish --self-contained -r win32-x64 -c Release 在项目的根文件夹中时,出现以下错误:

不太确定 WebJobs 规范,但您应该能够使用 dotnet publish --self-contained -r win-x64 -c Release 生成可执行文件及其依赖项。压缩它们,您应该能够部署到 Azure。

真的没有必要像你那样修改你的csproj

此外,您可以使用 .NET IL Linker 来缩小生成文件夹的大小。

参考

https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-cli#self-contained-deployment-with-third-party-dependencies