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

问题描述 投票:2回答:1

问题的简短版本:

我遇到了困难,包括我的.NET Core Console App所依赖的程序集。

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

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

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

在检查WebJob运行的文件夹后,我可以看到dllSystem.Data.SqlClient实际上在文件夹中。我的结论是版本号可能是一个问题。错误表明以下内容:

找不到'System.Data.SqlClient',版本:'4.4.2'

当我右键单击此程序集的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 Portal上传。这是我意识到NuGet程序集不包含在bin文件夹中的时候。故事的其余部分已经出现在“短版”部分。

我很欣赏解决这个问题的一些建议。

更新:

当我在项目的根文件夹中运行dotnet publish --self-contained -r win32-x64 -c Release时,我收到以下错误:enter image description here

visual-studio azure console-application azure-webjobs .net-core-2.0
1个回答
0
投票

不太确定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

© www.soinside.com 2019 - 2024. All rights reserved.