【问题标题】:I'm building a C# AWS Lambda package. How do I properly include System.Data.SqlClient.dll?我正在构建一个 C# AWS Lambda 包。如何正确包含 System.Data.SqlClient.dll?
【发布时间】:2017-05-05 06:42:29
【问题描述】:

我正在尝试使用 System.Data.SqlClient.dll 使用 .NET Core CLI 构建 C# AWS Lambda 包。

在我的 C# Lambda 函数中,我尝试连接到外部 SQL Server 实例。这样做时,我的代码中有“using System.Data.SqlClient”语句,并使用其中的一些类。

AWS 提供了一些关于使用“dotnet restore”和“dotnet publish”构建包的示例。经过一些工作,这些都与我的项目完美配合。运行发布后,发布目录结构如下:

*\bin\Debug\netcoreapp1.0\publish\runtimes*

包含目录'unix'、'win'、'win7-x64'和'win7-x86'

在这些目录的更深处,我找到了模块'System.Data.SqlClient.dll',例如:

\bin\Debug\netcoreapp1.0\publish\runtimes\unix\lib\netstandard1.3 \bin\Debug\netcoreapp1.0\publish\runtimes\win\lib\netstandard1.3

问题在于 AWS Lambda 似乎无法在此目录结构中找到模块。尝试测试代码时出现以下错误:

"errorMessage": "Could not load file or assembly 'System.Data.SqlClient, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.",

我没有找到任何关于此问题的参考资料,但我认为我需要修改目录结构以帮助 AWS 找到正确的文件。我想这意味着选择正确的运行时模块。

我在正确的轨道上吗?有没有人有更好的理解和一些指示? C# Lambda 函数太新了,我发现很难找到更多相关信息。

提前致谢!

【问题讨论】:

    标签: c# amazon-web-services aws-lambda sqlclient


    【解决方案1】:

    System.Data.SqlClient.dll 也有同样的问题。不知道为什么,但它有时不会在构建后复制到输出目录。您可以将此dll作为文件添加到项目中并将copy to output属性设置为true

    【讨论】:

    • 谢谢,感谢您的反馈。我认为基于操作系统的目录结构必须用于具有操作系统特定实现的模块,并且在恢复过程中.NET Core CLI 不会对操作系统做出任何假设以保持应用程序的可移植性?不能很好地与 AWS 配合使用,但我想我明白了。
    【解决方案2】:

    我建议使用与 dotnet CLI 集成的 Amazon.Lambda.Tools 包来执行打包。基本上你将 NuGet 包添加为工具并执行:

    dotnet lambda package
    

    还有其他的命令,你可以通过执行来发现

    dotnet lambda help
    

    package 命令有助于解决我们仅使用 dotnet publish 命令发现的一些问题。例如,对于 System.Data.SqlClient,package 命令会额外复制一些文件。

    有关它的更多信息,请查看 GitHub 存储库 https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.Tools

    【讨论】:

    • 我认为这就是我所缺少的。看起来棒极了!
    • @Norm Johanson 知道“文件的额外复制”是什么吗?
    • 我在 Visual Studio 2015 中创建了一个新的 Lambda C#,它有 Amazon.Lambda.Tools,但找不到 System.Data 和 System.Data.SqlClient。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多