gpt4 book ai didi

c# - EPPlus:.Net Core 3.1 Azure 函数中找不到 System.Text.Encoding.CodePages.dll

转载 作者:行者123 更新时间:2023-12-04 11:35:44 28 4
gpt4 key购买 nike

使用 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。

我尝试过关于绑定(bind)重定向的不同内容,但没有成功。这并不奇怪,因为绑定(bind)重定向更多地与 .net 框架相关。

这让我抓狂。

最佳答案

The ExcelPackage instanciation will raise the following error: "Couldnot load file or assembly 'System.Text.Encoding.CodePages,Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.The system cannot find the file specified." EPPlus is relyingSystem.Text.Encoding.CodePages 5.0.0.0 but looks like .Net core 3.1 isrelying on a 4.x version.

这与System.Text.Encoding.CodePages包的版本无关。我可以给你解释一下这种情况(其实和VS 2019中azure function tools的after-build操作有关)。

事实上,System.Text.Encoding.CodePage.dll文件已经被复制到了.\bin\Release\netcoreapp3.1\bin文件夹中azure 函数应用程序已构建。但是,azure function工具做了一个操作,在构建azure function应用程序后,它从 .\bin\Release\netcoreapp3.1\bin 中删除了许多文件。

The workaround I thought and tested successfully was just to copySystem.Text.Encoding.CodePages.dll in the bin folder of my solution.But very unsatisfactory because every time I am rebuilding thesolution, I have to deploy the System.Text.Encoding.CodePage.dllmanually.

您可以尝试使用“构建”操作而不是“重新构建”操作。将 System.Text.Encoding.CodePage.dll 放入 bin 文件夹后,“构建”操作不会将其删除。

这不是你的错,我认为这是azure function工具的设计错误。如果构建操作后不自动执行删除操作,则不会出现问题。希望我的回答能够解答您的疑惑。

您还可以给出 feedback这个问题。

(我认为你不需要的代码,所以我不会发布它。我已经做了测试,工作正常。)

关于c# - EPPlus:.Net Core 3.1 Azure 函数中找不到 System.Text.Encoding.CodePages.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65375906/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com