如何解决EPPlus:在 .Net Core 3.1 Azure 函数中找不到 System.Text.Encoding.CodePages.dll
我使用 VS2019 生成了一个 Azure Function 项目。 Azure 函数由 HTTP 请求触发,使用 EPPlus 将 CSV 内容转换为 XLSX 文件。
代码真的很简单:
[FunctionName("Function1")]
public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous,"get","post",Route = null)] HttpRequest req,ILogger log)
{
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
// line below will raise "System.Text.Encoding.CodePages.dll" not found exception
ExcelPackage xcel = new ExcelPackage();
// ... some other code
}
ExcelPackage 实例化将引发以下错误: “无法加载文件或程序集 'System.Text.Encoding.CodePages,Version=5.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'。系统找不到指定的文件。” EPPlus 依赖 System.Text.Encoding.CodePages 5.0.0.0 但看起来 .Net core 3.1 依赖于 4.x 版本。
我认为并成功测试的解决方法只是将 System.Text.Encoding.CodePages.dll 复制到我的解决方案的 bin 文件夹中。但是很不满意,因为每次重建方案时,都要手动部署System.Text.Encoding.CodePage.dll。
我尝试了不同的关于绑定重定向的内容,但没有成功。并不奇怪,因为绑定重定向与 .net 框架更相关。
这让我抓狂。
解决方法
ExcelPackage 实例化将引发以下错误:“Could 不加载文件或程序集 'System.Text.Encoding.CodePages, 版本=5.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 系统找不到指定的文件。” EPPlus 依赖 System.Text.Encoding.CodePages 5.0.0.0 但看起来像 .Net core 3.1 依赖 4.x 版本。
这与 System.Text.Encoding.CodePages
包的版本无关。这个情况我可以给你解释一下(其实和VS 2019中azure函数工具的构建后操作有关。)
实际上,在azure函数应用构建完成后,System.Text.Encoding.CodePage.dll
文件已经复制到了.\bin\Release\netcoreapp3.1\bin
文件夹中。但是,azure function tools做了一个操作,在azure function app构建完成后,它从.\bin\Release\netcoreapp3.1\bin
中删除了很多文件。
我认为并成功测试的解决方法只是复制 System.Text.Encoding.CodePages.dll 在我的解决方案的 bin 文件夹中。 但是很不满意因为每次我都在重建 解决方案,我必须部署 System.Text.Encoding.CodePage.dll 手动。
您可以尝试使用“构建”操作代替“重新构建”操作。将 System.Text.Encoding.CodePage.dll
放入 bin 文件夹后,'build' 操作不会删除它。
这不是你的错,我认为这是azure函数工具的设计错误。如果在构建操作后没有自动执行删除操作,则不会出现问题。希望我的回答能解答你的疑惑。
你也可以给出这个问题的feedback。
(我觉得代码你不需要,所以就不贴了。我做了测试,效果很好。)
,我在尝试类似的方法时遇到了同样的问题。 解决方案“非常简单”,与鲍曼给出的答案略有不同。
System.Text.Encoding.CodePages,Version=5.0.0.0 是为 .NET5 框架制作的包。它引用:
QMessageBox::warning
我认为该软件包与 .NetCore 3.1 不完全兼容,正如它所说的那样。
我找到的解决方案很简单,只需参考支持 NetCore 3.1(不是 NET5)上 Azure Functions 使用的运行时的 4.71 版本即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。