I am writing an Alexa skill in C# (.NET Core) to be run from an AWS Lambda function (which runs on Amazon Linux). When I compile the project (dotnet publish), I get the error:
Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10- x64, win81-x64, win8-x64, win7-x64'. Possible causes:
- The project has not been restored or restore failed - run dotnet restore
- The project does not list one of 'win10-x64, win81-x64, win8-x64, win7-x64' in the 'runtimes' section.
- You may be trying to publish a library, which is not supported. Use dotnet pack to distribute libraries.
If I specify a Windows runtime (such as win10-x64), it will compile fine, however one of my dependencies (Google Sheets API) has problems at runtime due to being on the Linux-based Lambda. Using a Linux runtime (such as debian.8-x64) will cause the same compile error.
Why would the AWS SDK require a Windows runtime, when its own platform is Linux? I feel like I'm missing something obvious and will happily face palm the moment someone points the issue out to me.
My project.json files (main app, and .NET Core class library project):
AlexaProj
{
"version": "1.0.0-*",
"buildOptions": {
},
"dependencies": {
"Microsoft.NETCore.App": "1.1.1",
"Amazon.Lambda.Core": "1.0.0*",
"Amazon.Lambda.Serialization.Json": "1.0.1",
"Amazon.Lambda.Tools": {
"type": "build",
"version": "1.3.0-preview1"
},
"Slight.Alexa.Core": "1.0.10-beta",
"AlexaProjLib": "1.0.0-*"
},
"tools": {
"Amazon.Lambda.Tools": "1.3.0-preview1"
},
"runtimes": {
"win10-x64": { } <--- Compiles, but fails at runtime
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
AlexaProjLib
{
"version": "1.0.0-*",
"dependencies": {
"Google.Apis": "1.21.0",
"Google.Apis.Core": "1.21.0",
"Google.Apis.Oauth2.v2": "1.21.0.672",
"Google.Apis.Sheets.v4": "1.21.0.798",
"NETStandard.Library": "1.6.1"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}