2016-07-08 14 views
21

क्या कोई व्यक्ति एफ # में लिखे गए न्यूनतम काम कर रहे एएसपी.NET कोर एप्लिकेशन प्रोजेक्ट को साझा कर सकता है?एएसपी.नेट कोर 1.0 एफ # प्रोजेक्ट

सी # में एक न्यूनतम प्रदर्शन लागू करने के लिए, हम निम्नलिखित क्या करना है:

mkdir aspnetcoreapp 
cd aspnetcoreapp 
dotnet new 

फिर project.json संपादित:

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true 
    }, 
    "dependencies": {}, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
     }, 
     "Microsoft.AspNetCore.Server.Kestrel": "1.0.0" 
     }, 
     "imports": "dnxcore50" 
    } 
    } 
} 

फिर dotnet restore करते हैं और follwoing कोड का उपयोग करें:

Startup.cs:

using System; 
using Microsoft.AspNetCore.Builder; 
using Microsoft.AspNetCore.Hosting; 
using Microsoft.AspNetCore.Http; 

namespace aspnetcoreapp 
{ 
    public class Startup 
    { 
     public void Configure(IApplicationBuilder app) 
     { 
      app.Run(context => 
      { 
       return context.Response.WriteAsync("Hello from ASP.NET Core!"); 
      }); 
     } 
    } 
} 

Program.cs:

using System; 
using Microsoft.AspNetCore.Hosting; 

namespace aspnetcoreapp 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      var host = new WebHostBuilder() 
       .UseKestrel() 
       .UseStartup<Startup>() 
       .Build(); 

      host.Run(); 
     } 
    } 
} 

फिर dotnet run प्रदर्शन करते हैं। क्या कोई मुझे संकेत दे सकता है कि एफ # में एक ही चीज़ कैसे करें?

+0

नमस्ते, मैंने सोचा अगर आप एफ # एएसपी में रुचि रखते हैं।नेट कोर वेब विकास तो आपको इस NuGet लाइब्रेरी में रुचि हो सकती है: https://github.com/dustinmoris/AspNetCore.Lambda। मैंने इसके बारे में यहां ब्लॉग किया है: https://dusted.codes/functional-aspnet-core – dustinmoris

उत्तर

21

मैं हाल ही में नया नेट नेट खोज रहा हूं और उसी प्रश्न का सामना कर रहा हूं। असल में, ऐसा करना काफी आसान है।

अपने project.json में एफ # क्रम संदर्भ जोड़ें: में

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "emitEntryPoint": true, 
    "compilerName": "fsc", 
    "compile": "**/*.fs" 
    }, 
    "dependencies": { 
    "Microsoft.FSharp.Core.netcore": "1.0.0-alpha-160509", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0" 
    }, 
    "tools": { 
    "dotnet-compile-fsc": { 
     "version": "1.0.0-preview2-*", 
     "imports": [ 
     "dnxcore50", 
     "portable-net45+win81", 
     "netstandard1.3" 
     ] 
    } 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
     } 
     }, 
     "imports": [ 
     "portable-net45+win8", 
     "dnxcore50" 
     ] 
    } 
    } 
} 

फिर डाल नीचे कोड अपने Program.fs:

open System 
open Microsoft.AspNetCore.Hosting 
open Microsoft.AspNetCore.Builder 
open Microsoft.AspNetCore.Hosting 
open Microsoft.AspNetCore.Http 


type Startup() = 
    member this.Configure(app: IApplicationBuilder) = 
     app.Run(fun context -> context.Response.WriteAsync("Hello from ASP.NET Core!")) 


[<EntryPoint>] 
let main argv = 
    let host = WebHostBuilder().UseKestrel().UseStartup<Startup>().Build() 
    host.Run() 
    printfn "Server finished!" 
    0 

बस वैसे, यह type Startup() नहीं की तरह अपने स्टार्टअप वर्ग को परिभाषित करने के लिए बहुत महत्वपूर्ण है type Startup। अन्यथा स्टार्टअप के दौरान केस्ट्रेल रनटाइम क्रैश हो जाएगा।

+2

कृपया यहां एक डेमो खोजें: https://github.com/pshirshov/asp-net-core-f-sharp-example –

+1

शानदार ! यह सचमुच काम करता है! क्या इसे किसी भी बिल्डपैक के साथ हरोकू में तैनात किया जा सकता है? – fpawel

+1

मुझे हेरोकू के साथ कोई अनुभव नहीं है, लेकिन यदि हेरोोकू .NET कोर ऐप्स का समर्थन करता है तो यह निश्चित रूप से भी काम करना चाहिए। –

25

मुझे लगता है कि आप जो खोज रहे हैं वह --lang स्विच है।

तो केवल परिवर्तन लाने के लिए आधार एफ # परियोजना होगी:

dotnet new --lang fsharp 

फिर आप वास्तविक ASP.NET तर्क के लिए पावेल के जवाब का पालन कर सकते हैं।

संपादित:

वैसे, fsharp भी f# और fs साथ, के रूप में यह पीआर में बताया गया है बदला जा सकता है।

और एक और issue है, जो टेम्पलेट्स को अनुमति देने के लिए dotnet new में परिवर्तन का प्रस्ताव करता है।

संपादित 2:

नई टूलींग अधिक टेम्पलेट्स का समर्थन करता है:

Templates         Short Name  Language  Tags 
-------------------------------------------------------------------------------------- 
Console Application      console   [C#], F#  Common/Console 
Class library        classlib  [C#], F#  Common/Library 
Unit Test Project       mstest   [C#], F#  Test/MSTest 
xUnit Test Project      xunit   [C#], F#  Test/xUnit 
Empty ASP.NET Core Web Application  web    [C#]   Web/Empty 
MVC ASP.NET Core Web Application   mvc    [C#], F#  Web/MVC 
Web API ASP.NET Core Web Application  webapi   [C#]   Web/WebAPI 
Solution File        sln       Solution 

प्रयोग उदाहरण:

X:\>dotnet new mvc -n MyFsharpProject -lang F# 
Content generation time: 309.5706 ms 
The template "MVC ASP.NET Core Web Application" created successfully. 
संबंधित मुद्दे