2016-12-20 6 views
3

Я пытаюсь создать пакет C# AWS Lambda, используя System.Data.SqlClient.dll, используя .NET Core CLI.Я строю пакет Lambda C# AWS. Как правильно включить System.Data.SqlClient.dll?

В моей функции Lambda C# Я пытаюсь подключиться к внешнему экземпляру SQL Server. При этом у меня есть «использование System.Data.SqlClient» в моем коде и использование некоторых из них.

В AWS приведены некоторые примеры использования 'dotnet restore' и 'dotnet publish' для сборки пакета. После некоторой работы они работают безупречно с моим проектом. После запуска публиковать, то публиковать структуру каталогов имеет следующий каталог:

* \ Bin \ Debug \ netcoreapp1.0 \ публикации \ Runtimes *

Содержит каталоги юниксовой ', 'выиграть', «win7-x64 'и' win7-x86 '.

Глубже внутри этих каталогов, я найти модуль 'System.Data.SqlClient.dll' внутри, например:

\ Bin \ Debug \ netcoreapp1.0 \ публиковать \ \ Unix среды выполнения \ Lib \ netstandard1.3 \ Bin \ Debug \ netcoreapp1.0 \ публиковать \ автономной работы \ победа \ Lib \ netstandard1.3

проблема заключается в том, что AWS Лямбда не могу найти модуль внутри этой структуры каталогов. При попытке проверки кода я получаю следующее сообщение об ошибке:

"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 настолько новы, что я нахожу это невероятно трудно найти дополнительную информацию.

Заранее благодарен!

ответ

3

Я бы порекомендовал использовать пакет Amazon.Lambda.Tools, который интегрируется с dotnet CLI для выполнения упаковки. В основном вы добавляете пакет NuGet в качестве инструмента и выполнить:

dotnet lambda package 

Есть и другие команды, а также которые вы можете обнаружить, выполнив

dotnet lambda help 

Команда пакет помогает некоторых шероховатостей мы нашли с используя только dotnet опубликуйте команду. Например, команда пакета выполняет дополнительное копирование файлов для случая System.Data.SqlClient.

Для получения дополнительной информации о его проверить из репозитория GitHub https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.Tools

+0

Я думаю, что это то, чего мне не хватало. Выглядит фантастично! – theoneandonly2

+0

@Norm Johanson Любые идеи, что такое «дополнительное копирование файлов»? – CamHart

+0

Я создал новый Lambda C# в Visual Studio 2015, и у него есть Amazon.Lambda.Tools, но он не может найти System.Data или System.Data.SqlClient. Есть идеи? – NealWalters

0

У меня была такая же проблема с System.Data.SqlClient.dll. Не знаю почему, но иногда он не копирует в выходной каталог после сборки. Вы можете добавить эту DLL в проект как файл и установить значение copy to output на true.

+0

Спасибо, я ценю обратную связь. Я думаю, что структура каталогов на основе ОС должна быть для модулей, которые имеют конкретные реализации ОС и что в процессе восстановления .NET Core CLI не делает никаких предположений об ОС в попытке сохранить приложение переносимым? Не играет хорошо с AWS, но я думаю, что понимаю. – theoneandonly2