├── .gitignore ├── README.md ├── SkillAssets ├── SpaceFactsIntentSchema.json └── Utterances.txt ├── SpaceGeek.sln ├── SpaceGeek ├── Function.cs ├── Properties │ └── AssemblyInfo.cs ├── Readme.md ├── SpaceGeek.xproj └── project.json └── global.json /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | 27 | # Visual Studio 2015 cache/options directory 28 | .vs/ 29 | # Uncomment if you have tasks that create the project's static files in wwwroot 30 | #wwwroot/ 31 | 32 | # MSTest test Results 33 | [Tt]est[Rr]esult*/ 34 | [Bb]uild[Ll]og.* 35 | 36 | # NUNIT 37 | *.VisualState.xml 38 | TestResult.xml 39 | 40 | # Build Results of an ATL Project 41 | [Dd]ebugPS/ 42 | [Rr]eleasePS/ 43 | dlldata.c 44 | 45 | # .NET Core 46 | project.lock.json 47 | project.fragment.lock.json 48 | artifacts/ 49 | **/Properties/launchSettings.json 50 | 51 | *_i.c 52 | *_p.c 53 | *_i.h 54 | *.ilk 55 | *.meta 56 | *.obj 57 | *.pch 58 | *.pdb 59 | *.pgc 60 | *.pgd 61 | *.rsp 62 | *.sbr 63 | *.tlb 64 | *.tli 65 | *.tlh 66 | *.tmp 67 | *.tmp_proj 68 | *.log 69 | *.vspscc 70 | *.vssscc 71 | .builds 72 | *.pidb 73 | *.svclog 74 | *.scc 75 | 76 | # Chutzpah Test files 77 | _Chutzpah* 78 | 79 | # Visual C++ cache files 80 | ipch/ 81 | *.aps 82 | *.ncb 83 | *.opendb 84 | *.opensdf 85 | *.sdf 86 | *.cachefile 87 | *.VC.db 88 | *.VC.VC.opendb 89 | 90 | # Visual Studio profiler 91 | *.psess 92 | *.vsp 93 | *.vspx 94 | *.sap 95 | 96 | # TFS 2012 Local Workspace 97 | $tf/ 98 | 99 | # Guidance Automation Toolkit 100 | *.gpState 101 | 102 | # ReSharper is a .NET coding add-in 103 | _ReSharper*/ 104 | *.[Rr]e[Ss]harper 105 | *.DotSettings.user 106 | 107 | # JustCode is a .NET coding add-in 108 | .JustCode 109 | 110 | # TeamCity is a build add-in 111 | _TeamCity* 112 | 113 | # DotCover is a Code Coverage Tool 114 | *.dotCover 115 | 116 | # Visual Studio code coverage results 117 | *.coverage 118 | *.coveragexml 119 | 120 | # NCrunch 121 | _NCrunch_* 122 | .*crunch*.local.xml 123 | nCrunchTemp_* 124 | 125 | # MightyMoose 126 | *.mm.* 127 | AutoTest.Net/ 128 | 129 | # Web workbench (sass) 130 | .sass-cache/ 131 | 132 | # Installshield output folder 133 | [Ee]xpress/ 134 | 135 | # DocProject is a documentation generator add-in 136 | DocProject/buildhelp/ 137 | DocProject/Help/*.HxT 138 | DocProject/Help/*.HxC 139 | DocProject/Help/*.hhc 140 | DocProject/Help/*.hhk 141 | DocProject/Help/*.hhp 142 | DocProject/Help/Html2 143 | DocProject/Help/html 144 | 145 | # Click-Once directory 146 | publish/ 147 | 148 | # Publish Web Output 149 | *.[Pp]ublish.xml 150 | *.azurePubxml 151 | # TODO: Comment the next line if you want to checkin your web deploy settings 152 | # but database connection strings (with potential passwords) will be unencrypted 153 | *.pubxml 154 | *.publishproj 155 | 156 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 157 | # checkin your Azure Web App publish settings, but sensitive information contained 158 | # in these scripts will be unencrypted 159 | PublishScripts/ 160 | 161 | # NuGet Packages 162 | *.nupkg 163 | # The packages folder can be ignored because of Package Restore 164 | **/packages/* 165 | # except build/, which is used as an MSBuild target. 166 | !**/packages/build/ 167 | # Uncomment if necessary however generally it will be regenerated when needed 168 | #!**/packages/repositories.config 169 | # NuGet v3's project.json files produces more ignoreable files 170 | *.nuget.props 171 | *.nuget.targets 172 | 173 | # Microsoft Azure Build Output 174 | csx/ 175 | *.build.csdef 176 | 177 | # Microsoft Azure Emulator 178 | ecf/ 179 | rcf/ 180 | 181 | # Windows Store app package directories and files 182 | AppPackages/ 183 | BundleArtifacts/ 184 | Package.StoreAssociation.xml 185 | _pkginfo.txt 186 | 187 | # Visual Studio cache files 188 | # files ending in .cache can be ignored 189 | *.[Cc]ache 190 | # but keep track of directories ending in .cache 191 | !*.[Cc]ache/ 192 | 193 | # Others 194 | ClientBin/ 195 | ~$* 196 | *~ 197 | *.dbmdl 198 | *.dbproj.schemaview 199 | *.jfm 200 | *.pfx 201 | *.publishsettings 202 | orleans.codegen.cs 203 | 204 | # Since there are multiple workflows, uncomment next line to ignore bower_components 205 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 206 | #bower_components/ 207 | 208 | # RIA/Silverlight projects 209 | Generated_Code/ 210 | 211 | # Backup & report files from converting an old project file 212 | # to a newer Visual Studio version. Backup files are not needed, 213 | # because we have git ;-) 214 | _UpgradeReport_Files/ 215 | Backup*/ 216 | UpgradeLog*.XML 217 | UpgradeLog*.htm 218 | 219 | # SQL Server files 220 | *.mdf 221 | *.ldf 222 | 223 | # Business Intelligence projects 224 | *.rdl.data 225 | *.bim.layout 226 | *.bim_*.settings 227 | 228 | # Microsoft Fakes 229 | FakesAssemblies/ 230 | 231 | # GhostDoc plugin setting file 232 | *.GhostDoc.xml 233 | 234 | # Node.js Tools for Visual Studio 235 | .ntvs_analysis.dat 236 | node_modules/ 237 | 238 | # Typescript v1 declaration files 239 | typings/ 240 | 241 | # Visual Studio 6 build log 242 | *.plg 243 | 244 | # Visual Studio 6 workspace options file 245 | *.opt 246 | 247 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 248 | *.vbw 249 | 250 | # Visual Studio LightSwitch build output 251 | **/*.HTMLClient/GeneratedArtifacts 252 | **/*.DesktopClient/GeneratedArtifacts 253 | **/*.DesktopClient/ModelManifest.xml 254 | **/*.Server/GeneratedArtifacts 255 | **/*.Server/ModelManifest.xml 256 | _Pvt_Extensions 257 | 258 | # Paket dependency manager 259 | .paket/paket.exe 260 | paket-files/ 261 | 262 | # FAKE - F# Make 263 | .fake/ 264 | 265 | # JetBrains Rider 266 | .idea/ 267 | *.sln.iml 268 | 269 | # CodeRush 270 | .cr/ 271 | 272 | # Python Tools for Visual Studio (PTVS) 273 | __pycache__/ 274 | *.pyc 275 | 276 | # Cake - Uncomment if you are using it 277 | # tools/** 278 | # !tools/packages.config -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Alexa Trivia Skill in .NET 2 | This is a C# port of the [Alexa Space Geek sample](https://github.com/alexa/skill-sample-nodejs-trivia) 3 | 4 | This is the code refereed to in my 3 part Alexa Skills tutorial series 5 | 6 | 1. [AWS Setup for Alexa Skills](http://matthiasshapiro.com/2017/02/10/tutorial-alexa-skills-in-c-setup/) 7 | 2. [Writing an Alexa Skill in C#](http://matthiasshapiro.com/2017/02/10/tutorial-alexa-skills-in-c-the-code/) - a detailed overview of this project 8 | 3. [Deploying and Testing an Alexa Skill](http://matthiasshapiro.com/2017/02/10/tutorial-alexa-skills-in-c-setup/Deploying) 9 | 10 | This skill utilizes the [Alexa Skills SDK for .NET](https://github.com/timheuer/alexa-skills-dotnet). 11 | 12 | # Key Components # 13 | There are two key parts to this project (and to any Alexa Skill running of Amazon's Lambda service). 14 | 15 | The first is the code itself, which is in [Function.cs](https://github.com/matthiasxc/alexa-net-trivia/blob/master/SpaceGeek/Function.cs). 16 | 17 | The second part are the Utterances and Intent Schema, which are both found in the [SkillAssets folder](https://github.com/matthiasxc/alexa-net-trivia/tree/master/SkillAssets). These are not compiled into the skill but are used when declaring and deploying the application through [Amazon's Alexa Skill portal.](https://developer.amazon.com/edw/home.html#/) 18 | -------------------------------------------------------------------------------- /SkillAssets/SpaceFactsIntentSchema.json: -------------------------------------------------------------------------------- 1 | { 2 | "intents": [ 3 | { "intent": "GetNewFactIntent"}, 4 | { "intent": "GetFactIntent" }, 5 | { "intent": "AMAZON.HelpIntent" }, 6 | { "intent": "AMAZON.StopIntent" }, 7 | { "intent": "AMAZON.CancelIntent" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /SkillAssets/Utterances.txt: -------------------------------------------------------------------------------- 1 | GetFactIntent give me a space fact 2 | GetFactIntent tell me a space fact 3 | GetFactIntent give me a fact 4 | GetFactIntent tell me a fact 5 | GetFactIntent tell me something 6 | 7 | GetNewFactIntent tell me a new fact 8 | GetNewFactIntent tell me another fact 9 | GetNewFactIntent tell me something new 10 | 11 | AMAZON.StopIntent we're done 12 | AMAZON.StopIntent that is enough -------------------------------------------------------------------------------- /SpaceGeek.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "SpaceGeek", "SpaceGeek\SpaceGeek.xproj", "{3F8FFF30-2D96-4166-98A1-1F36BEBAB098}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {3F8FFF30-2D96-4166-98A1-1F36BEBAB098}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {3F8FFF30-2D96-4166-98A1-1F36BEBAB098}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {3F8FFF30-2D96-4166-98A1-1F36BEBAB098}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {3F8FFF30-2D96-4166-98A1-1F36BEBAB098}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /SpaceGeek/Function.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Amazon.Lambda.Core; 6 | using Amazon.Lambda.Serialization; 7 | using Alexa.NET.Response; 8 | using Alexa.NET.Request; 9 | using Alexa.NET.Request.Type; 10 | using Newtonsoft.Json; 11 | 12 | // Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. 13 | [assembly: LambdaSerializerAttribute(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] 14 | 15 | namespace SpaceGeek 16 | { 17 | public class Function 18 | { 19 | public List GetResources() 20 | { 21 | List resources = new List(); 22 | FactResource enUSResource = new FactResource("en-US"); 23 | enUSResource.SkillName = "American Science Facts"; 24 | enUSResource.GetFactMessage = "Here's your science fact: "; 25 | enUSResource.HelpMessage = "You can say tell me a science fact, or, you can say exit... What can I help you with?"; 26 | enUSResource.HelpReprompt = "You can say tell me a science fact to start"; 27 | enUSResource.StopMessage = "Goodbye!"; 28 | enUSResource.Facts.Add("A year on Mercury is just 88 days long."); 29 | enUSResource.Facts.Add("Despite being farther from the Sun, Venus experiences higher temperatures than Mercury."); 30 | enUSResource.Facts.Add("Venus rotates counter-clockwise, possibly because of a collision in the past with an asteroid."); 31 | enUSResource.Facts.Add("On Mars, the Sun appears about half the size as it does on Earth."); 32 | enUSResource.Facts.Add("Earth is the only planet not named after a god."); 33 | enUSResource.Facts.Add("Jupiter has the shortest day of all the planets."); 34 | enUSResource.Facts.Add("The Milky Way galaxy will collide with the Andromeda Galaxy in about 5 billion years."); 35 | enUSResource.Facts.Add("The Sun contains 99.86% of the mass in the Solar System."); 36 | enUSResource.Facts.Add("The Sun is an almost perfect sphere."); 37 | enUSResource.Facts.Add("A total solar eclipse can happen once every 1 to 2 years. This makes them a rare event."); 38 | enUSResource.Facts.Add("Saturn radiates two and a half times more energy into space than it receives from the sun."); 39 | enUSResource.Facts.Add("The temperature inside the Sun can reach 15 million degrees Celsius."); 40 | enUSResource.Facts.Add("The Moon is moving approximately 3.8 cm away from our planet every year."); 41 | 42 | resources.Add(enUSResource); 43 | return resources; 44 | } 45 | 46 | /// 47 | /// A simple function that takes a string and does a ToUpper 48 | /// 49 | /// 50 | /// 51 | /// 52 | public SkillResponse FunctionHandler(SkillRequest input, ILambdaContext context) 53 | { 54 | SkillResponse response = new SkillResponse(); 55 | response.Response = new ResponseBody(); 56 | response.Response.ShouldEndSession = false; 57 | IOutputSpeech innerResponse = null; 58 | var log = context.Logger; 59 | log.LogLine($"Skill Request Object:"); 60 | log.LogLine(JsonConvert.SerializeObject(input)); 61 | 62 | var allResources = GetResources(); 63 | var resource = allResources.FirstOrDefault(); 64 | 65 | if (input.GetRequestType() == typeof(LaunchRequest)) 66 | { 67 | log.LogLine($"Default LaunchRequest made: 'Alexa, open Science Facts"); 68 | innerResponse = new PlainTextOutputSpeech(); 69 | (innerResponse as PlainTextOutputSpeech).Text = emitNewFact(resource, true); 70 | 71 | } 72 | else if (input.GetRequestType() == typeof(IntentRequest)) 73 | { 74 | var intentRequest = (IntentRequest)input.Request; 75 | 76 | switch (intentRequest.Intent.Name) 77 | { 78 | case "AMAZON.CancelIntent": 79 | log.LogLine($"AMAZON.CancelIntent: send StopMessage"); 80 | innerResponse = new PlainTextOutputSpeech(); 81 | (innerResponse as PlainTextOutputSpeech).Text = resource.StopMessage; 82 | response.Response.ShouldEndSession = true; 83 | break; 84 | case "AMAZON.StopIntent": 85 | log.LogLine($"AMAZON.StopIntent: send StopMessage"); 86 | innerResponse = new PlainTextOutputSpeech(); 87 | (innerResponse as PlainTextOutputSpeech).Text = resource.StopMessage; 88 | response.Response.ShouldEndSession = true; 89 | break; 90 | case "AMAZON.HelpIntent": 91 | log.LogLine($"AMAZON.HelpIntent: send HelpMessage"); 92 | innerResponse = new PlainTextOutputSpeech(); 93 | (innerResponse as PlainTextOutputSpeech).Text = resource.HelpMessage; 94 | break; 95 | case "GetFactIntent": 96 | log.LogLine($"GetFactIntent sent: send new fact"); 97 | innerResponse = new PlainTextOutputSpeech(); 98 | (innerResponse as PlainTextOutputSpeech).Text = emitNewFact(resource, false); 99 | break; 100 | case "GetNewFactIntent": 101 | log.LogLine($"GetFactIntent sent: send new fact"); 102 | innerResponse = new PlainTextOutputSpeech(); 103 | (innerResponse as PlainTextOutputSpeech).Text = emitNewFact(resource, false); 104 | break; 105 | default: 106 | log.LogLine($"Unknown intent: " + intentRequest.Intent.Name); 107 | innerResponse = new PlainTextOutputSpeech(); 108 | (innerResponse as PlainTextOutputSpeech).Text = resource.HelpReprompt; 109 | break; 110 | } 111 | } 112 | 113 | response.Response.OutputSpeech = innerResponse; 114 | response.Version = "1.0"; 115 | log.LogLine($"Skill Response Object..."); 116 | log.LogLine(JsonConvert.SerializeObject(response)); 117 | return response; 118 | } 119 | 120 | public string emitNewFact(FactResource resource, bool withPreface) 121 | { 122 | Random r = new Random(); 123 | if(withPreface) 124 | return resource.GetFactMessage + resource.Facts[r.Next(resource.Facts.Count)]; 125 | return resource.Facts[r.Next(resource.Facts.Count)]; 126 | } 127 | 128 | } 129 | 130 | public class FactResource 131 | { 132 | public FactResource(string language) 133 | { 134 | this.Language = language; 135 | this.Facts = new List(); 136 | } 137 | 138 | public string Language { get; set; } 139 | public string SkillName { get; set; } 140 | public List Facts { get; set; } 141 | public string GetFactMessage { get; set; } 142 | public string HelpMessage { get; set; } 143 | public string HelpReprompt { get; set; } 144 | public string StopMessage { get; set; } 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /SpaceGeek/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SpaceGeek")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SpaceGeek")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("3f8fff30-2d96-4166-98a1-1f36bebab098")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /SpaceGeek/Readme.md: -------------------------------------------------------------------------------- 1 | # AWS Lambda Empty Function Project 2 | 3 | This starter project consists of: 4 | * Function.cs - class file containing a class with a single function handler method 5 | * aws-lambda-tools-defaults.json - default argument settings for use with Visual Studio and command line deployment tools for AWS 6 | * project.json - .NET Core project file with build and tool declarations for the Amazon.Lambda.Tools Nuget package 7 | 8 | You may also have a test project depending on the options selected. 9 | 10 | The generated function handler is a simple method accepting a string argument that returns the uppercase equivalent of the input string. Replace the body of this method, and parameters, to suit your needs. 11 | 12 | ## Here are some steps to follow from Visual Studio: 13 | 14 | To deploy your function to AWS Lambda, right click the project in Solution Explorer and select *Publish to AWS Lambda*. 15 | 16 | To view your deployed function open its Function View window by double-clicking the function name shown beneath the AWS Lambda node in the AWS Explorer tree. 17 | 18 | To perform testing against your deployed function use the Test Invoke tab in the opened Function View window. 19 | 20 | To configure event sources for your deployed function, for example to have your function invoked when an object is created in an Amazon S3 bucket, use the Event Sources tab in the opened Function View window. 21 | 22 | To update the runtime configuration of your deployed function use the Configuration tab in the opened Function View window. 23 | 24 | To view execution logs of invocations of your function use the Logs tab in the opened Function View window. 25 | 26 | ## Here are some steps to follow to get started from the command line: 27 | 28 | Once you have edited your function you can use the following command lines to build, test and deploy your function to AWS Lambda from the command line (these examples assume the project name is *EmptyFunction*): 29 | 30 | Restore dependencies 31 | ``` 32 | cd "EmptyFunction" 33 | dotnet restore 34 | ``` 35 | 36 | Execute unit tests 37 | ``` 38 | cd "EmptyFunction/test/EmptyFunction.Tests" 39 | dotnet test 40 | ``` 41 | 42 | Deploy function to AWS Lambda 43 | ``` 44 | cd "EmptyFunction/src/EmptyFunction" 45 | dotnet lambda deploy-function 46 | ``` 47 | -------------------------------------------------------------------------------- /SpaceGeek/SpaceGeek.xproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14.0 5 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) 6 | 7 | 8 | 9 | 10 | 3f8fff30-2d96-4166-98a1-1f36bebab098 11 | .\obj 12 | .\bin\ 13 | v4.5 14 | true 15 | 16 | 17 | 18 | 2.0 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /SpaceGeek/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0.0-*", 3 | "buildOptions": { 4 | }, 5 | 6 | "dependencies": { 7 | "Microsoft.NETCore.App": { 8 | "type": "platform", 9 | "version": "1.0.0" 10 | }, 11 | "Amazon.Lambda.Core": "1.0.0*", 12 | "Amazon.Lambda.Serialization.Json": "1.0.1", 13 | "Amazon.Lambda.Tools": { 14 | "type": "build", 15 | "version": "1.1.0-preview1" 16 | }, 17 | "Newtonsoft.Json": "9.0.1", 18 | "Alexa.NET": "1.0.0-beta-2" 19 | }, 20 | 21 | "tools": { 22 | "Amazon.Lambda.Tools" : "1.1.0-preview1" 23 | }, 24 | 25 | "frameworks": { 26 | "netcoreapp1.0": { 27 | "imports": "dnxcore50" 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "1.0.0-preview2-003131" 4 | } 5 | } --------------------------------------------------------------------------------