Я установил 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
.Не очень удобно, но можно обойтись.
Есть идеи?