Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';我正在构建一个C#AWS Lambda包。如何正确地包括System.Data.SqlClient.dll?_C#_Amazon Web Services_Aws Lambda_Sqlclient - Fatal编程技术网

I';我正在构建一个C#AWS Lambda包。如何正确地包括System.Data.SqlClient.dll?

I';我正在构建一个C#AWS Lambda包。如何正确地包括System.Data.SqlClient.dll?,c#,amazon-web-services,aws-lambda,sqlclient,C#,Amazon Web Services,Aws Lambda,Sqlclient,我正在尝试使用System.Data.SqlClient.dll和.NET Core CLI构建一个C#AWS Lambda包 在我的C#Lambda函数中,我试图连接到外部SQL Server实例。在这样做的过程中,我在代码中使用了“using System.Data.SqlClient”语句,并利用了其中的一些类 AWS提供了一些使用“dotnet还原”和“dotnet发布”构建包的示例。经过一些工作,这些都是完美的工作与我的项目。运行发布后,发布目录结构具有以下目录: *\bin\Debu

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

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

AWS提供了一些使用“dotnet还原”和“dotnet发布”构建包的示例。经过一些工作,这些都是完美的工作与我的项目。运行发布后,发布目录结构具有以下目录:

*\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”:“无法加载文件或程序集”System.Data.SqlClient,版本=4.1.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a。系统找不到指定的文件。”

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

我走对了吗?有人有更好的理解和一些建议吗?C#Lambda函数非常新,我发现要找到更多关于它的信息非常困难


提前谢谢

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

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

dotnet lambda package
还可以通过执行其他命令来发现这些命令

dotnet lambda help
package命令有助于解决我们仅使用dotnet publish命令时遇到的一些难题。例如,对于System.Data.SqlClient,package命令会对文件进行一些额外的复制

有关它的更多信息,请查看GitHub存储库

谢谢,我感谢您的反馈。我认为基于操作系统的目录结构必须适用于具有特定于操作系统的实现的模块,并且在恢复过程中.NET Core CLI不会对操作系统进行任何假设,以保持应用程序的可移植性?虽然不能很好地使用AWS,但我想我理解。我想这就是我所缺少的。看起来棒极了@Norm Johanson知道“额外复制文件”是什么吗?我在Visual Studio 2015中创建了一个新的Lambda C#,它有Amazon.Lambda.Tools,但找不到System.Data或System.Data.SqlClient。有什么想法吗?