diff --git a/Build/PackageFiles/ItemTemplates-Isolated.nuspec b/Build/PackageFiles/ItemTemplates-Isolated.nuspec
index fa70a7da6..194d835f2 100644
--- a/Build/PackageFiles/ItemTemplates-Isolated.nuspec
+++ b/Build/PackageFiles/ItemTemplates-Isolated.nuspec
@@ -20,22 +20,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -48,10 +68,18 @@
+
+
+
+
+
+
+
+
diff --git a/Build/PackageFiles/ProjectTemplates-Isolated.nuspec b/Build/PackageFiles/ProjectTemplates-Isolated.nuspec
index 71f7f2566..e7d04c475 100644
--- a/Build/PackageFiles/ProjectTemplates-Isolated.nuspec
+++ b/Build/PackageFiles/ProjectTemplates-Isolated.nuspec
@@ -22,5 +22,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/.template.config/template.json b/Functions.Templates/ProjectTemplate/FSharp-Isolated/.template.config/template.json
new file mode 100644
index 000000000..13943318d
--- /dev/null
+++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "author": "Microsoft",
+ "classifications": [
+ "Azure Functions",
+ "Solution"
+ ],
+ "name": "Azure Functions",
+ "generatorVersions": "[1.0.0.0-*)",
+ "groupIdentity": "Microsoft.AzureFunctions.ProjectTemplates",
+ "precedence": "100",
+ "identity": "Microsoft.AzureFunctions.ProjectTemplate.FSharp.Isolated.3.x",
+ "shortName": "func",
+ "tags": {
+ "language": "F#",
+ "type": "project"
+ },
+ "sourceName": "Company.FunctionApp",
+ "symbols": {
+ "StorageConnectionStringValue": {
+ "description": "The connection string for your Azure WebJobs Storage.",
+ "type": "parameter",
+ "defaultValue": "UseDevelopmentStorage=true",
+ "replaces": "AzureWebJobsStorageConnectionStringValue",
+ "DataType": "AzureStorage"
+ },
+ "AzureFunctionsVersion": {
+ "description": "The setting that determines the target release",
+ "type": "parameter",
+ "defaultValue": "V3",
+ "replaces": "AzureFunctionsVersionValue"
+ }
+ },
+ "sources": [
+ {
+ "modifiers": [
+ {
+ "rename": {
+ "_gitignore": ".gitignore"
+ }
+ }
+ ]
+ }
+ ],
+ "primaryOutputs": [
+ {
+ "path": "Company.FunctionApp.fsproj"
+ }
+ ],
+ "defaultName": "Company.FunctionApp"
+}
\ No newline at end of file
diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/Company.FunctionApp.fsproj b/Functions.Templates/ProjectTemplate/FSharp-Isolated/Company.FunctionApp.fsproj
new file mode 100644
index 000000000..b446521af
--- /dev/null
+++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/Company.FunctionApp.fsproj
@@ -0,0 +1,23 @@
+
+
+ net5.0
+ AzureFunctionsVersionValue
+ Exe
+ Company.FunctionApp
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+
+
diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/Program.fs b/Functions.Templates/ProjectTemplate/FSharp-Isolated/Program.fs
new file mode 100644
index 000000000..430996400
--- /dev/null
+++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/Program.fs
@@ -0,0 +1,11 @@
+open Microsoft.Extensions.Hosting
+
+[]
+let main args =
+ let host =
+ HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .Build()
+
+ host.Run()
+ 0
diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/_gitignore b/Functions.Templates/ProjectTemplate/FSharp-Isolated/_gitignore
new file mode 100644
index 000000000..ff5b00c50
--- /dev/null
+++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/_gitignore
@@ -0,0 +1,264 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# Azure Functions localsettings file
+local.settings.json
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# DNX
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings
+# but database connection strings (with potential passwords) will be unencrypted
+#*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+# NuGet v3's project.json files produces more ignoreable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+node_modules/
+orleans.codegen.cs
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush
+.cr/
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
\ No newline at end of file
diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/host.json b/Functions.Templates/ProjectTemplate/FSharp-Isolated/host.json
new file mode 100644
index 000000000..beb2e4020
--- /dev/null
+++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/host.json
@@ -0,0 +1,11 @@
+{
+ "version": "2.0",
+ "logging": {
+ "applicationInsights": {
+ "samplingSettings": {
+ "isEnabled": true,
+ "excludedTypes": "Request"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Functions.Templates/ProjectTemplate/FSharp-Isolated/local.settings.json b/Functions.Templates/ProjectTemplate/FSharp-Isolated/local.settings.json
new file mode 100644
index 000000000..ee9f3c090
--- /dev/null
+++ b/Functions.Templates/ProjectTemplate/FSharp-Isolated/local.settings.json
@@ -0,0 +1,7 @@
+{
+ "IsEncrypted": false,
+ "Values": {
+ "AzureWebJobsStorage": "AzureWebJobsStorageConnectionStringValue",
+ "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
+ }
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/template.json
new file mode 100644
index 000000000..462acbc28
--- /dev/null
+++ b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/template.json
@@ -0,0 +1,70 @@
+{
+ "author": "Microsoft",
+ "classifications": [
+ "Azure Function"
+ ],
+ "name": "BlobTrigger",
+ "identity": "Azure.Function.FSharp.Isolated.BlobTrigger.3.x",
+ "groupIdentity": "Azure.Function.BlobTrigger",
+ "shortName": "Blob",
+ "tags": {
+ "language": "F#",
+ "type": "item"
+ },
+ "sourceName": "BlobTriggerFSharp",
+ "symbols": {
+ "namespace": {
+ "description": "namespace for the generated code",
+ "replaces": "Company.Function",
+ "type": "parameter"
+ },
+ "Connection": {
+ "description": "The name of the app setting containing your Storage connection.",
+ "type": "parameter",
+ "defaultValue": "",
+ "replaces": "ConnectionValue"
+ },
+ "Path": {
+ "description": "This is the path within your storage account that the trigger will monitor.",
+ "type": "parameter",
+ "defaultValue": "samples-workitems",
+ "replaces": "PathValue"
+ }
+ },
+ "primaryOutputs": [
+ {
+ "path": "BlobTriggerFSharp.fs"
+ }
+ ],
+ "defaultName": "BlobTriggerFSharp",
+ "postActions": [
+ {
+ "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.Storage Nuget package",
+ "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814",
+ "ContinueOnError": "true",
+ "ManualInstructions": [],
+ "args": {
+ "referenceType": "package",
+ "reference": "Microsoft.Azure.Functions.Worker.Extensions.Storage",
+ "version": "4.0.4",
+ "projectFileExtensions": ".fsproj"
+ }
+ },
+ {
+ "description": "Restore NuGet packages required by this project.",
+ "manualInstructions": [],
+ "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
+ "continueOnError": true
+ },
+ {
+ "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")",
+ "description": "Opens the function class file in the editor",
+ "manualInstructions": [],
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "args": {
+ "files": "0"
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
new file mode 100644
index 000000000..a105629d7
--- /dev/null
+++ b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
@@ -0,0 +1,38 @@
+{
+ "name": {
+ "text": "Blob trigger",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2000"
+ },
+ "description": {
+ "text": "An F# function that will be run whenever a blob is added to a specified container.",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2001"
+ },
+ "order": 400,
+ "icon": "vs-2017.3/blob.png",
+ "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145",
+ "uiFilters": [
+ "functions"
+ ],
+ "symbolInfo": [
+ {
+ "id": "Connection",
+ "name": {
+ "id": "2002",
+ "text": "Connection string setting name",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ },
+ {
+ "id": "Path",
+ "name": {
+ "id": "2003",
+ "text": "Path",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32.png
new file mode 100644
index 000000000..ec528eb6c
Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32.png differ
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32@2x.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32@2x.png
new file mode 100644
index 000000000..14e79cccd
Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32@2x.png differ
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark.png
new file mode 100644
index 000000000..6332107f5
Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark.png differ
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark@2x.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark@2x.png
new file mode 100644
index 000000000..3c4cadd66
Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark@2x.png differ
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel.png
new file mode 100644
index 000000000..4945f5ca0
Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel.png differ
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel@2x.png
new file mode 100644
index 000000000..94596d688
Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~dark~sel@2x.png differ
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel.png
new file mode 100644
index 000000000..4945f5ca0
Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel.png differ
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel@2x.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel@2x.png
new file mode 100644
index 000000000..94596d688
Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob-mac-32~sel@2x.png differ
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob.png b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob.png
new file mode 100644
index 000000000..ddf38c2f9
Binary files /dev/null and b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/.template.config/vs-2017.3/blob.png differ
diff --git a/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/BlobTriggerFSharp.fs b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/BlobTriggerFSharp.fs
new file mode 100644
index 000000000..709c09122
--- /dev/null
+++ b/Functions.Templates/Templates/BlobTrigger-FSharp-Isolated/BlobTriggerFSharp.fs
@@ -0,0 +1,20 @@
+namespace Company.Function
+
+open System.IO
+open Microsoft.Azure.Functions.Worker
+open Microsoft.Extensions.Logging
+
+module BlobTriggerFSharp =
+
+ []
+ let run
+ (
+ [] myBlob: string,
+ name: string,
+ context: FunctionContext
+ ) =
+ let msg =
+ sprintf "F# Blob trigger function Processed blob\nName: %s \n Data: %s" name myBlob
+
+ let logger = context.GetLogger "BlobTriggerFSharp"
+ logger.LogInformation msg
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/template.json
new file mode 100644
index 000000000..713e4153f
--- /dev/null
+++ b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/template.json
@@ -0,0 +1,75 @@
+{
+ "author": "Microsoft",
+ "classifications": [
+ "Azure Function"
+ ],
+ "name": "CosmosDBTrigger",
+ "identity": "Azure.Function.FSharp.Isolated.CosmosDBTrigger.3.x",
+ "groupIdentity": "Azure.Function.CosmosDBTrigger",
+ "shortName": "CosmosDB",
+ "tags": {
+ "language": "F#",
+ "type": "item"
+ },
+ "sourceName": "CosmosDBTriggerFSharp",
+ "symbols": {
+ "namespace": {
+ "description": "namespace for the generated code",
+ "replaces": "Company.Function",
+ "type": "parameter"
+ },
+ "ConnectionStringSetting": {
+ "description": "The name of the App Setting containing the connection string to the service that contains the collection to be monitored.",
+ "type": "parameter",
+ "defaultValue": "",
+ "replaces": "ConnectionValue"
+ },
+ "DatabaseName": {
+ "description": "This is the name of the database that includes the collection to be monitored.",
+ "type": "parameter",
+ "defaultValue": "databaseName",
+ "replaces": "DatabaseValue"
+ },
+ "CollectionName": {
+ "description": "This is the name of the collection to be monitored.",
+ "type": "parameter",
+ "defaultValue": "collectionName",
+ "replaces": "CollectionValue"
+ }
+ },
+ "primaryOutputs": [
+ {
+ "path": "CosmosDBTriggerFSharp.fs"
+ }
+ ],
+ "defaultName": "CosmosDBTriggerFSharp",
+ "postActions": [
+ {
+ "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.CosmosDB Nuget package",
+ "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814",
+ "ContinueOnError": "true",
+ "ManualInstructions": [],
+ "args": {
+ "referenceType": "package",
+ "reference": "Microsoft.Azure.Functions.Worker.Extensions.CosmosDB", "version": "3.0.9",
+ "projectFileExtensions": ".fsproj"
+ }
+ },
+ {
+ "description": "Restore NuGet packages required by this project.",
+ "manualInstructions": [],
+ "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
+ "continueOnError": true
+ },
+ {
+ "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")",
+ "description": "Opens the function class file in the editor",
+ "manualInstructions": [],
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "args": {
+ "files": "0"
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
new file mode 100644
index 000000000..867696f57
--- /dev/null
+++ b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
@@ -0,0 +1,47 @@
+{
+ "name": {
+ "text": "Cosmos DB Trigger",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2010"
+ },
+ "description": {
+ "text": "A F# function that will be run whenever documents change in a document collection.",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2035"
+ },
+ "order": 700,
+ "icon": "vs-2017.3/cosmosdb.png",
+ "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145",
+ "uiFilters": [
+ "functions"
+ ],
+ "symbolInfo": [
+ {
+ "id": "ConnectionStringSetting",
+ "name": {
+ "id": "2011",
+ "text": "Connection string setting name",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ },
+ {
+ "id": "DatabaseName",
+ "name": {
+ "id": "2012",
+ "text": "Database name",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ },
+ {
+ "id": "CollectionName",
+ "name": {
+ "id": "2013",
+ "text": "Collection name",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32.png
new file mode 100644
index 000000000..63147863e
Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32.png differ
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32@2x.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32@2x.png
new file mode 100644
index 000000000..bb103da52
Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32@2x.png differ
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark.png
new file mode 100644
index 000000000..76b4ff67d
Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark.png differ
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark@2x.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark@2x.png
new file mode 100644
index 000000000..0f5bfb062
Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark@2x.png differ
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel.png
new file mode 100644
index 000000000..0e809becf
Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel.png differ
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel@2x.png
new file mode 100644
index 000000000..d462324d2
Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~dark~sel@2x.png differ
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel.png
new file mode 100644
index 000000000..0e809becf
Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel.png differ
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel@2x.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel@2x.png
new file mode 100644
index 000000000..d462324d2
Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb-mac-32~sel@2x.png differ
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb.png b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb.png
new file mode 100644
index 000000000..303aec186
Binary files /dev/null and b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/.template.config/vs-2017.3/cosmosdb.png differ
diff --git a/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/CosmosDBTriggerFSharp.fs b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/CosmosDBTriggerFSharp.fs
new file mode 100644
index 000000000..3a1a8068e
--- /dev/null
+++ b/Functions.Templates/Templates/CosmosDBTrigger-FSharp-Isolated/CosmosDBTriggerFSharp.fs
@@ -0,0 +1,29 @@
+namespace Company.Function
+
+open System
+open System.Collections.Generic
+open Microsoft.Azure.Functions.Worker
+open Microsoft.Extensions.Logging
+
+module CosmosDBTriggerFSharp =
+ type MyDocument =
+ { Id: string
+ Text: string
+ Number: int
+ Boolean: bool }
+
+ []
+ let run
+ (
+ [] input: IReadOnlyList,
+ context: FunctionContext
+ ) =
+ let logger =
+ context.GetLogger "CosmsoDBTriggerFSharp"
+
+ if not (isNull input) && input.Count > 0 then
+ log.LogInformation(sprintf "Documents modified %d" input.Count)
+ log.LogInformation("First document Id " + input.[0].Id)
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/template.json
new file mode 100644
index 000000000..3daa3f8a6
--- /dev/null
+++ b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/template.json
@@ -0,0 +1,59 @@
+{
+ "author": "Microsoft",
+ "classifications": [
+ "Azure Function",
+ "Trigger",
+ "EventGrid"
+ ],
+ "name": "EventGridTrigger",
+ "identity": "Azure.Function.FSharp.Isolated.EventGridTrigger.3.x",
+ "groupIdentity": "Azure.Function.EventGridTrigger",
+ "shortName": "eventgrid",
+ "tags": {
+ "language": "F#",
+ "type": "item"
+ },
+ "sourceName": "EventGridTriggerFSharp",
+ "symbols": {
+ "namespace": {
+ "description": "namespace for the generated code",
+ "replaces": "Company.Function",
+ "type": "parameter"
+ }
+ },
+ "primaryOutputs": [
+ {
+ "path": "EventGridTriggerFSharp.fs"
+ }
+ ],
+ "defaultName": "EventGridTriggerFSharp",
+ "postActions": [
+ {
+ "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.EventGrid Nuget package",
+ "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814",
+ "ContinueOnError": "true",
+ "ManualInstructions": [],
+ "args": {
+ "referenceType": "package",
+ "reference": "Microsoft.Azure.Functions.Worker.Extensions.EventGrid", "version": "2.1.0",
+ "projectFileExtensions": ".fsproj"
+ }
+ },
+ {
+ "description": "Restore NuGet packages required by this project.",
+ "manualInstructions": [],
+ "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
+ "continueOnError": true
+ },
+ {
+ "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")",
+ "description": "Opens the function class file in the editor",
+ "manualInstructions": [],
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "args": {
+ "files": "0"
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
new file mode 100644
index 000000000..10413cf13
--- /dev/null
+++ b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
@@ -0,0 +1,18 @@
+{
+ "name": {
+ "text": "Event Grid trigger",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "1020"
+ },
+ "description": {
+ "text": "An F# function that will be run whenever an event grid receives a new event",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "1021"
+ },
+ "order": 450,
+ "icon": "vs-2017.3/eventGrid.png",
+ "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145",
+ "uiFilters": [
+ "functions"
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32.png
new file mode 100644
index 000000000..962c83096
Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32.png differ
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32@2x.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32@2x.png
new file mode 100644
index 000000000..efc053211
Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32@2x.png differ
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark.png
new file mode 100644
index 000000000..dfe1af858
Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark.png differ
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark@2x.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark@2x.png
new file mode 100644
index 000000000..c267fd04a
Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark@2x.png differ
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel.png
new file mode 100644
index 000000000..3de3643ae
Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel.png differ
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel@2x.png
new file mode 100644
index 000000000..57dd6d2c5
Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~dark~sel@2x.png differ
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel.png
new file mode 100644
index 000000000..3de3643ae
Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel.png differ
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel@2x.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel@2x.png
new file mode 100644
index 000000000..57dd6d2c5
Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid-mac-32~sel@2x.png differ
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid.png b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid.png
new file mode 100644
index 000000000..31d8aa8fc
Binary files /dev/null and b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventGrid.png differ
diff --git a/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/EventGridTriggerFSharp.fs b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/EventGridTriggerFSharp.fs
new file mode 100644
index 000000000..b673a2abd
--- /dev/null
+++ b/Functions.Templates/Templates/EventGridTrigger-FSharp-Isolated/EventGridTriggerFSharp.fs
@@ -0,0 +1,23 @@
+namespace Company.Function
+// Default URL for triggering event grid function in the local environment.
+// http://localhost:7071/runtime/webhooks/EventGrid?functionName={functionname}
+
+open System
+open Microsoft.Azure.Functions.Worker
+open Microsoft.Extensions.Logging
+
+module EventGridTriggerFSharp =
+ type MyEvent =
+ { Id: string
+ Topic: string
+ Subject: string
+ EventType: string
+ EventTime: DateTime
+ Data: object }
+
+ []
+ let run ([] eventGridEvent: MyEvent, context: FunctionContext) =
+ let logger =
+ context.GetLogger("EventGridTriggerFSharp")
+
+ log.LogInformation(eventGridEvent.Data.ToString())
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/template.json
new file mode 100644
index 000000000..25059527c
--- /dev/null
+++ b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/template.json
@@ -0,0 +1,71 @@
+{
+ "author": "Microsoft",
+ "classifications": [
+ "Azure Function",
+ "Trigger",
+ "EventHub"
+ ],
+ "name": "EventHubTrigger",
+ "identity": "Azure.Function.FSharp.Isolated.EventHubTrigger.3.x",
+ "groupIdentity": "Azure.Function.EventHubTrigger",
+ "shortName": "eventhub",
+ "tags": {
+ "language": "F#",
+ "type": "item"
+ },
+ "sourceName": "EventHubTriggerFSharp",
+ "symbols": {
+ "namespace": {
+ "description": "namespace for the generated code",
+ "replaces": "Company.Function",
+ "type": "parameter"
+ },
+ "Connection": {
+ "description": "The name of the app setting containing your Event Hub connection string. The connection string must have Send permissions.",
+ "type": "parameter",
+ "defaultValue": "",
+ "replaces": "ConnectionValue"
+ },
+ "EventHubName": {
+ "description": "This is the name of the event hub to which the event will be sent.",
+ "type": "parameter",
+ "defaultValue": "samples-workitems",
+ "replaces": "eventHubNameValue"
+ }
+ },
+ "primaryOutputs": [
+ {
+ "path": "EventHubTriggerFSharp.fs"
+ }
+ ],
+ "defaultName": "EventHubTriggerFSharp",
+ "postActions": [
+ {
+ "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.EventHubs NuGet package",
+ "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814",
+ "ContinueOnError": "true",
+ "ManualInstructions": [],
+ "args": {
+ "referenceType": "package",
+ "reference": "Microsoft.Azure.Functions.Worker.Extensions.EventHubs", "version": "4.2.0",
+ "projectFileExtensions": ".fsproj"
+ }
+ },
+ {
+ "description": "Restore NuGet packages required by this project.",
+ "manualInstructions": [],
+ "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
+ "continueOnError": true
+ },
+ {
+ "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")",
+ "description": "Opens the function class file in the editor",
+ "manualInstructions": [],
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "args": {
+ "files": "0"
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
new file mode 100644
index 000000000..1a96266f2
--- /dev/null
+++ b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
@@ -0,0 +1,38 @@
+{
+ "name": {
+ "text": "Event Hub trigger",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2040"
+ },
+ "description": {
+ "text": "An F# function that will be run whenever an event hub receives a new event",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2041"
+ },
+ "order": 500,
+ "icon": "vs-2017.3/eventhub.png",
+ "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145",
+ "uiFilters": [
+ "functions"
+ ],
+ "symbolInfo": [
+ {
+ "id": "Connection",
+ "name": {
+ "id": "2042",
+ "text": "Connection string setting name",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ },
+ {
+ "id": "EventHubName",
+ "name": {
+ "id": "2043",
+ "text": "Event Hub name",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32.png
new file mode 100644
index 000000000..874319051
Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32.png differ
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32@2x.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32@2x.png
new file mode 100644
index 000000000..452abf8f3
Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32@2x.png differ
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark.png
new file mode 100644
index 000000000..9a5088b1d
Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark.png differ
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark@2x.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark@2x.png
new file mode 100644
index 000000000..7d028d551
Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark@2x.png differ
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel.png
new file mode 100644
index 000000000..237693e86
Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel.png differ
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel@2x.png
new file mode 100644
index 000000000..91ca04e91
Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~dark~sel@2x.png differ
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel.png
new file mode 100644
index 000000000..237693e86
Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel.png differ
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel@2x.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel@2x.png
new file mode 100644
index 000000000..91ca04e91
Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub-mac-32~sel@2x.png differ
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub.png b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub.png
new file mode 100644
index 000000000..31d8aa8fc
Binary files /dev/null and b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/.template.config/vs-2017.3/eventhub.png differ
diff --git a/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/EventHubTriggerFSharp.fs b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/EventHubTriggerFSharp.fs
new file mode 100644
index 000000000..0314f1dff
--- /dev/null
+++ b/Functions.Templates/Templates/EventHubTrigger-FSharp-Isolated/EventHubTriggerFSharp.fs
@@ -0,0 +1,17 @@
+namespace Company.Function
+
+open System
+open Microsoft.Azure.Functions.Worker
+open Microsoft.Extensions.Logging
+
+module EventHuBTriggerFSharp =
+ []
+ let run
+ (
+ [] input: string [],
+ context: FunctionContext
+ ) =
+ let logger =
+ context.GetLogger("EventHubTriggerFSharp")
+
+ logger.LogInformation(sprintf "First Event Hubs triggered message: %s" (input |> Array.head))
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/template.json
new file mode 100644
index 000000000..588fa4cd9
--- /dev/null
+++ b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/template.json
@@ -0,0 +1,61 @@
+{
+ "author": "Microsoft",
+ "classifications": [
+ "Azure Function"
+ ],
+ "name": "HttpTrigger",
+ "identity": "Azure.Function.FSharp.Isolated.HttpTrigger.3.x",
+ "groupIdentity": "Azure.Function.HttpTrigger",
+ "shortName": "Http",
+ "tags": {
+ "language": "F#",
+ "type": "item"
+ },
+ "sourceName": "HttpTriggerFSharp",
+ "symbols": {
+ "namespace": {
+ "description": "namespace for the generated code",
+ "replaces": "Company.Function",
+ "type": "parameter"
+ },
+ "AccessRights": {
+ "type": "parameter",
+ "description": "Authorization level controls whether the function requires an API key and which key to use; Function uses a function key; Admin uses your master key. The function and master keys are found in the 'keys' management panel on the portal, when your function is selected.",
+ "datatype": "choice",
+ "choices": [
+ {
+ "choice": "Function",
+ "description": "Function"
+ },
+ {
+ "choice": "Anonymous",
+ "description": "Anonymous"
+ },
+ {
+ "choice": "Admin",
+ "description": "Admin"
+ }
+ ],
+ "replaces": "AuthLevelValue",
+ "defaultValue": "Function"
+ }
+ },
+ "primaryOutputs": [
+ {
+ "path": "HttpTriggerFSharp.fs"
+ }
+ ],
+ "defaultName": "HttpTriggerFSharp",
+ "postActions": [
+ {
+ "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")",
+ "description": "Opens the function class file in the editor",
+ "manualInstructions": [],
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "args": {
+ "files": "0"
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
new file mode 100644
index 000000000..86351840f
--- /dev/null
+++ b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
@@ -0,0 +1,29 @@
+{
+ "name": {
+ "text": "Http trigger",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2050"
+ },
+ "description": {
+ "text": "A F# function that will be run whenever it receives an HTTP request",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2051"
+ },
+ "order": 100,
+ "icon": "vs-2017.3/httpTrigger.png",
+ "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145",
+ "uiFilters": [
+ "functions"
+ ],
+ "symbolInfo": [
+ {
+ "id": "AccessRights",
+ "name": {
+ "id": "2052",
+ "text": "Authorization level",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32.png
new file mode 100644
index 000000000..35af3f04f
Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32.png differ
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32@2x.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32@2x.png
new file mode 100644
index 000000000..d15cf2148
Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32@2x.png differ
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark.png
new file mode 100644
index 000000000..7b608aba9
Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark.png differ
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark@2x.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark@2x.png
new file mode 100644
index 000000000..75d84039a
Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark@2x.png differ
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel.png
new file mode 100644
index 000000000..a7e429830
Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel.png differ
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel@2x.png
new file mode 100644
index 000000000..38aa25740
Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~dark~sel@2x.png differ
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel.png
new file mode 100644
index 000000000..a7e429830
Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel.png differ
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel@2x.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel@2x.png
new file mode 100644
index 000000000..38aa25740
Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger-mac-32~sel@2x.png differ
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger.png b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger.png
new file mode 100644
index 000000000..39237ed71
Binary files /dev/null and b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/.template.config/vs-2017.3/httpTrigger.png differ
diff --git a/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/HttpTriggerFSharp.fs b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/HttpTriggerFSharp.fs
new file mode 100644
index 000000000..625bb0987
--- /dev/null
+++ b/Functions.Templates/Templates/HttpTrigger-FSharp-Isolated/HttpTriggerFSharp.fs
@@ -0,0 +1,23 @@
+namespace Company.Function
+
+open System.Net
+open Microsoft.Azure.Functions.Worker
+open Microsoft.Azure.Functions.Worker.Http
+open Microsoft.Extensions.Logging
+
+module HttpTriggerFSharp =
+
+ []
+ let run
+ ([] req: HttpRequestData)
+ (context: FunctionContext)
+ =
+ let logger = context.GetLogger "HttpTriggerFSharp"
+ logger.LogInformation "F# HTTP trigger function processed a request"
+
+ let response = req.CreateResponse(HttpStatusCode.OK)
+ response.Headers.Add("Content-Type", "text/plain; charset=utf-8")
+
+ response.WriteString "Welcome to Azure Functions!"
+
+ response
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/template.json
new file mode 100644
index 000000000..7b9b3cfbd
--- /dev/null
+++ b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/template.json
@@ -0,0 +1,69 @@
+{
+ "author": "Microsoft",
+ "classifications": [
+ "Azure Function"
+ ],
+ "name": "QueueTrigger",
+ "identity": "Azure.Function.FSharp.Isolated.QueueTrigger.3.x",
+ "groupIdentity": "Azure.Function.QueueTrigger",
+ "shortName": "Queue",
+ "tags": {
+ "language": "F#",
+ "type": "item"
+ },
+ "sourceName": "QueueTriggerFSharp",
+ "symbols": {
+ "namespace": {
+ "description": "namespace for the generated code",
+ "replaces": "Company.Function",
+ "type": "parameter"
+ },
+ "Connection": {
+ "description": "The name of the app setting containing your Storage connection.",
+ "type": "parameter",
+ "defaultValue": "",
+ "replaces": "ConnectionValue"
+ },
+ "QueueName": {
+ "description": "This is the path within your storage account that the trigger will monitor.",
+ "type": "parameter",
+ "defaultValue": "myqueue-items",
+ "replaces": "PathValue"
+ }
+ },
+ "primaryOutputs": [
+ {
+ "path": "QueueTriggerFSharp.fs"
+ }
+ ],
+ "defaultName": "QueueTriggerFSharp",
+ "postActions": [
+ {
+ "Description": "Adding Reference to Microsoft.Azure.Functions.Worker.Extensions.Storage Nuget package",
+ "ActionId": "B17581D1-C5C9-4489-8F0A-004BE667B814",
+ "ContinueOnError": "true",
+ "ManualInstructions": [],
+ "args": {
+ "referenceType": "package",
+ "reference": "Microsoft.Azure.Functions.Worker.Extensions.Storage", "version": "4.0.4",
+ "projectFileExtensions": ".fsproj"
+ }
+ },
+ {
+ "description": "Restore NuGet packages required by this project.",
+ "manualInstructions": [],
+ "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
+ "continueOnError": true
+ },
+ {
+ "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")",
+ "description": "Opens the function class file in the editor",
+ "manualInstructions": [],
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "args": {
+ "files": "0"
+ },
+ "continueOnError": true
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
new file mode 100644
index 000000000..7342b352e
--- /dev/null
+++ b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
@@ -0,0 +1,38 @@
+{
+ "name": {
+ "text": "Queue trigger",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2060"
+ },
+ "description": {
+ "text": "An F# function that will be run whenever a message is added to a specified Azure Queue Storage",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2061"
+ },
+ "order": 300,
+ "icon": "vs-2017.3/queue.png",
+ "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145",
+ "uiFilters": [
+ "functions"
+ ],
+ "symbolInfo": [
+ {
+ "id": "Connection",
+ "name": {
+ "id": "2062",
+ "text": "Connection string setting name",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ },
+ {
+ "id": "QueueName",
+ "name": {
+ "id": "2063",
+ "text": "Queue name",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32.png
new file mode 100644
index 000000000..1c4173228
Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32.png differ
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32@2x.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32@2x.png
new file mode 100644
index 000000000..b4f86a316
Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32@2x.png differ
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark.png
new file mode 100644
index 000000000..57286530c
Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark.png differ
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark@2x.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark@2x.png
new file mode 100644
index 000000000..aba48eeb3
Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark@2x.png differ
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel.png
new file mode 100644
index 000000000..6e892fc6f
Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel.png differ
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel@2x.png
new file mode 100644
index 000000000..6e3db0e87
Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~dark~sel@2x.png differ
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel.png
new file mode 100644
index 000000000..6e892fc6f
Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel.png differ
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel@2x.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel@2x.png
new file mode 100644
index 000000000..6e3db0e87
Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue-mac-32~sel@2x.png differ
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue.png b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue.png
new file mode 100644
index 000000000..a12717af8
Binary files /dev/null and b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/.template.config/vs-2017.3/queue.png differ
diff --git a/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/QueueTriggerFSharp.fs b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/QueueTriggerFSharp.fs
new file mode 100644
index 000000000..25d096dd7
--- /dev/null
+++ b/Functions.Templates/Templates/QueueTrigger-FSharp-Isolated/QueueTriggerFSharp.fs
@@ -0,0 +1,18 @@
+namespace Company.Function
+
+open System
+open Microsoft.Azure.Functions.Worker
+open Microsoft.Extensions.Logging
+
+module QueueTriggerFSharp =
+ []
+ let run
+ (
+ [] myQueueItem: string,
+ context: FunctionContext
+ ) =
+ let msg =
+ sprintf "F# Queue trigger function processed: %s" myQueueItem
+
+ let logger = context.GetLogger "QueueTriggerFSharp"
+ log.LogInformation msg
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/template.json b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/template.json
new file mode 100644
index 000000000..b51601236
--- /dev/null
+++ b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/template.json
@@ -0,0 +1,46 @@
+{
+ "author": "Microsoft",
+ "classifications": [
+ "Azure Function"
+ ],
+ "name": "TimerTrigger",
+ "identity": "Azure.Function.FSharp.Isolated.TimerTrigger.3.x",
+ "groupIdentity": "Azure.Function.TimerTrigger",
+ "shortName": "Timer",
+ "tags": {
+ "language": "F#",
+ "type": "item"
+ },
+ "sourceName": "TimerTriggerFSharp",
+ "symbols": {
+ "namespace": {
+ "description": "namespace for the generated code",
+ "replaces": "Company.Function",
+ "type": "parameter"
+ },
+ "Schedule": {
+ "type": "parameter",
+ "description": "Enter a cron expression of the format '{second} {minute} {hour} {day} {month} {day of week}' to specify the schedule.",
+ "defaultValue": "0 */5 * * * *",
+ "replaces": "ScheduleValue"
+ }
+ },
+ "primaryOutputs": [
+ {
+ "path": "TimerTriggerFSharp.fs"
+ }
+ ],
+ "defaultName": "TimerTriggerFSharp",
+ "postActions": [
+ {
+ "condition": "(HostIdentifier != \"dotnetcli\" && HostIdentifier != \"dotnetcli-preview\")",
+ "description": "Opens the function class file in the editor",
+ "manualInstructions": [],
+ "actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
+ "args": {
+ "files": "0"
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
new file mode 100644
index 000000000..855c05508
--- /dev/null
+++ b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3.host.json
@@ -0,0 +1,29 @@
+{
+ "name": {
+ "text": "Timer trigger",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2070"
+ },
+ "description": {
+ "text": "A F# function that will be run on a specified schedule",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}",
+ "id": "2071"
+ },
+ "order": 200,
+ "icon": "vs-2017.3/timer.png",
+ "learnMoreLink": "https://go.microsoft.com/fwlink/?linkid=848145",
+ "uiFilters": [
+ "functions"
+ ],
+ "symbolInfo": [
+ {
+ "id": "Schedule",
+ "name": {
+ "id": "2072",
+ "text": "Schedule",
+ "package": "{E9BCFE2B-304A-4D7F-836F-F3A4FB1A1451}"
+ },
+ "isVisible": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32.png
new file mode 100644
index 000000000..221aeda34
Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32.png differ
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32@2x.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32@2x.png
new file mode 100644
index 000000000..e5a69dbe6
Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32@2x.png differ
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark.png
new file mode 100644
index 000000000..6968561d6
Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark.png differ
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark@2x.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark@2x.png
new file mode 100644
index 000000000..e24e2009b
Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark@2x.png differ
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel.png
new file mode 100644
index 000000000..a12cd4299
Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel.png differ
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel@2x.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel@2x.png
new file mode 100644
index 000000000..f477bd6a8
Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~dark~sel@2x.png differ
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel.png
new file mode 100644
index 000000000..a12cd4299
Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel.png differ
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel@2x.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel@2x.png
new file mode 100644
index 000000000..f477bd6a8
Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer-mac-32~sel@2x.png differ
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer.png b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer.png
new file mode 100644
index 000000000..e77ada9f5
Binary files /dev/null and b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/.template.config/vs-2017.3/timer.png differ
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/TimerTriggerFSharp.fs b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/TimerTriggerFSharp.fs
new file mode 100644
index 000000000..3b843b464
--- /dev/null
+++ b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/TimerTriggerFSharp.fs
@@ -0,0 +1,21 @@
+namespace Company.Function
+
+open System
+open Microsoft.Azure.Functions.Worker
+open Microsoft.Extensions.Logging
+
+module TimerTriggerFSharp =
+ type MyScheduleStatus =
+ { Last: DateTime
+ Next: DateTime
+ LastUpdate: DateTime }
+
+ type MyInfo =
+ { ScheduleStatus: MyScheduleStatus
+ IsPastDue: bool }
+
+ []
+ let run ([] myTimer: MyInfo, context: FunctionContext) =
+ let logger = context.GetLogger "TimerTriggerFSharp"
+ logger.LogInformation(sprintf "F# Time trigger function executed at: %A" DateTime.Now)
+ logger.LogInformation(sprintf "Next timer schedule at: %A" myTimer.ScheduleStatus.Next)
diff --git a/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/readme.md b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/readme.md
new file mode 100644
index 000000000..e6b4ecc09
--- /dev/null
+++ b/Functions.Templates/Templates/TimerTrigger-FSharp-Isolated/readme.md
@@ -0,0 +1,11 @@
+# TimerTrigger - F#
+
+The `TimerTrigger` makes it incredibly easy to have your functions executed on a schedule. This sample demonstrates a simple use case of calling your function every 5 minutes.
+
+## How it works
+
+For a `TimerTrigger` to work, you provide a schedule in the form of a [cron expression](https://en.wikipedia.org/wiki/Cron#CRON_expression)(See the link for full details). A cron expression is a string with 6 separate expressions which represent a given schedule via patterns. The pattern we use to represent every 5 minutes is `0 */5 * * * *`. This, in plain text, means: "When seconds is equal to 0, minutes is divisible by 5, for any hour, day of the month, month, day of the week, or year".
+
+## Learn more
+
+ Documentation