Самая базовая лямбда-функция AWS с ядром .net не собирается - PullRequest
0 голосов
/ 27 января 2019

Я установил AWS Tools для Visual Studio и создал базовую лямбда-функцию.Я ничего не изменил в коде, но при запуске dotnet publish или при публикации через Visual Studio я получаю:

C: \ Users \ Jens Rabe \ source \ repos \ lambdatest \ SimpleLambdaTest> dotnet publish

Microsoft (R) Build Engine version 15.9.20+g88f5fadfbe for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 42.2 ms for C:\Users\Jens Rabe\source\repos\lambdatest\SimpleLambdaTest\SimpleLambdaTest.csproj.
Function.cs(2,12): error CS0246: The type or namespace name 'LambdaSerializerAttribute' could not be found (are you missing a using directive or an assembly reference?) [C:\Users\Jens Rabe\source\repos\lambdatest\SimpleLambdaTest\SimpleLambdaTest.csproj]
Function.cs(2,12): error CS0246: The type or namespace name 'LambdaSerializer' could not be found (are you missing a using directive or an assembly reference?) [C:\Users\Jens Rabe\source\repos\lambdatest\SimpleLambdaTest\SimpleLambdaTest.csproj]
Function.cs(13,53): error CS0246: The type or namespace name 'ILambdaContext' could not be found (are you missing a using directive or an assembly reference?) [C:\Users\Jens Rabe\source\repos\lambdatest\SimpleLambdaTest\SimpleLambdaTest.csproj]

Это мой SimpleLambdaTest.csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <AWSProjectType>Lambda</AWSProjectType>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Amazon.Lambda.Core" Version="1.0.0" />
    <PackageReference Include="Amazon.Lambda.Serialization.Json" Version="1.4.0" />
  </ItemGroup>

</Project>

Я также не изменил Function.cs:

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

namespace AlexaWhereIs {
    public class Function {

        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public string FunctionHandler(string input, ILambdaContext context) {
            return input?.ToUpper();
        }
    }
}

При попытке скомпилировать его изнутриVS, он также жалуется на три недоступные вещи.

Что мне не хватает?

Продолжение 1

Я установил Amazon.Lambda.Templates с помощью командной строки:

dotnet new -i Amazon.Lambda.Templates

И воссоздали функцию с помощью

dotnet new lambda.EmptyFunction --name SimpleLambdaTest --profile default --region eu-west-1

Затем я импортировал проект в моё решение, и он прекрасно строится и публикуется.Однако после загрузки Visual Studio аварийно завершает работу с «Сообщество Visual Studio перестало работать».

Followup 2

Поэтому я развернул его один раз, и Visual Studio аварийно завершил работу, как указано выше.Но затем я могу повторно развернуть его в командной строке с помощью dotnet lambda deploy-function и проверить его с помощью dotnet lambda invoke-function.Не очень удобно, но можно обойтись.

Есть идеи?

1 Ответ

0 голосов
/ 29 января 2019

Похоже, что в файле function.cs отсутствует ссылка на библиотеку Amazon.Lambda.Core.Пожалуйста, используйте следующую строку импорта в начале вашего файла function.cs

с использованием Amazon.Lambda.Core;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...