2016 年 8 月

第 31 卷,第 8 期

本文章是由機器翻譯。

ASP.NET Core - 使用 Visual Studio Code 及 Entity Framework 撰寫應用程式

Alessandro Del Del |2016 年 8 月

開放原始碼和跨平台開發而言十分重要的 Microsoft 的目前和未來的策略。許多的建置組塊的.NET 堆疊已開啟來源,而其他人已開發出採行和支援新的策略。ASP.NET Core 1.0 時,目前在 Release Candidate (RC) 模式是最新的開放原始碼技術,來建置 Web 和雲端,Linux、 Mac OS X 和 Windows 上執行的跨平台應用程式。

ASP.NET Core 可讓您撰寫 C# 的模型檢視控制器 (MVC) 應用程式,並依賴.NET Core (dotnet.github.io),新開啟的執行階段、 程式庫及編譯器的來源和跨平台模組集 — 在 RC 中,太。ASP.NET Core 的最大的好處是完全獨立於任何專屬的專案系統或整合式的開發環境中,這表示您也可以建置 ASP.NET 核心應用程式 Microsoft Visual Studio 之外,不同於 Windows 作業系統上。

若要這麼做,您可以使用一些命令列工具建立結構、 建置及執行應用程式,雖然您可以使用 Visual Studio 程式碼進行編輯。沒有進行中的工作很多,因此某些功能可能會變更,直到達到發行製造 (RTM) 里程碑。比方說,ASP.NET 核心用於依賴.NET 執行環境 (DNX) 和其命令列介面 (CLI) 來建置和管理應用程式。因為 ASP.NET 核心奠基於.NET Core、 DNX 將被淘汰,而且其 CLI 會切換至未來的版本的.NET Core 命令列工具,因此記住這如果您想要開始使用 ASP.NET 核心和 C# 撰寫跨平台 Web 應用程式。

這篇文章說明如何建立會利用執行資料作業,針對資料庫中,Entity Framework 7 的跨平台 ASP.NET 核心 Web 應用程式以及如何在 Visual Studio 程式碼中撰寫程式碼 (code.visualstudio.com),您使用 Linux、 OS X 和 Windows 上。因為焦點位於資料,建議您閱讀官方網站上的 「.NET Core 和 Visual Studio 程式碼 」 文件 (bit.ly/1PhzoC7)。您將撰寫數個命令的 DNX 環境,以便與目前的 RC。請記住這會取代從.NET 核心 CLI 指令 ASP.NET 核心變成 RTM 之後。

我會指出在適當的地方將被取代的命令。我要建立範例應用程式中使用新的 Visual Studio 程式碼工具。Visual Studio 程式碼是一個複雜、 多國語言和跨平台開發工具,將使其中心撰寫程式碼,並讓您可以發出建置命令已攔截程序。我假設您已安裝 Visual Studio 程式碼,Node.js (nodejs.org),SQL Server Express Edition (bit.ly/1PhzoC7) 和 ASP.NET 核心 1.0 RC (get.asp.net/OtherDownloads)。

建立範例資料庫

首先,建立要使用的資料庫。您可以使用現有的資料庫,或您也可以定義資料模型使用 Entity Framework Code First 方法時,但支援 ASP.NET 核心中的程式碼移轉是仍在進行中,而且不穩定的這一次。因此您只會建立新的資料庫會儲存一份汽車模型和其製造商的名稱。在 SQL Server Management Studio,建立新的資料庫稱為汽車,然後撰寫和執行查詢所示 [圖 1, ,以定義名為汽車,有三個資料行的資料表︰ Id (主索引鍵和自動遞增)、 CarModel (的輸入 NVarChar(Max)) 和製造商 (型別 NVarChar(Max))。

[圖 1 建立的範例資料表

CREATE TABLE [dbo].[Cars](
  [id] [int] IDENTITY(1,1) NOT NULL,
  [CarModel] [nvarchar](max) NOT NULL,
  [Brand] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_Cars] PRIMARY KEY CLUSTERED
(
  [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
  ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Cars] ON
GO
INSERT [dbo].[Cars] ([id], [CarModel], [Brand]) VALUES (1, N'Mustang', N'Ford')
GO
INSERT [dbo].[Cars] ([id], [CarModel], [Brand]) VALUES (2, N'500', N'Fiat')
GO
INSERT [dbo].[Cars] ([id], [CarModel], [Brand]) VALUES (3, N'Giulia', N'Alfa Romeo')
GO
SET IDENTITY_INSERT [dbo].[Cars] OFF
GO
USE [master]
GO
ALTER DATABASE [CARS] SET  READ_WRITE
GO

根據您的案例中,您也可以考慮移除資料行類型的位元用來將項目標記為已刪除,但實際上永遠不會從資料存放區實體。

請確認資料表的資料庫,然後在 Management Studio 物件總管中正確顯示範例資料。

安裝 C# 的 Visual Studio 程式碼

在 Visual Studio 程式碼,C# 語言支援最近已移至延伸模組,您必須下載並個別安裝。強烈建議您安裝 C# 擴充功能來取得所有進化的編輯功能,例如語法顏色標示、 IntelliSense、 程式碼會發出做為您偵測型別以及其他等等。若要安裝 C#,執行 Visual Studio 程式碼、 開啟命令調色盤 (F1),然後輸入副檔名的 「 安裝 」 然後按 Enter。從清單中的延伸模組,連按兩下 [C# 並等候安裝完成。出現提示時,接受重新啟動 Visual Studio 程式碼。

Scaffolding ASP.NET 核心應用程式

Visual Studio 程式碼已自動產生的 ASP.NET 核心專案沒有內建命令,手動建立的專案需要投入一些工作。目前 RC 的 ASP.NET 核心,您可以使用命令列工具,稱為 Yeoman (yeoman.io),還會提供一個選項來產生 ASP.NET 核心應用程式基本架構的熱門 scaffolding 工具。Yeoman 是 Node.js,而必須從命令列使用 Node.js 封裝管理員 (npm) 安裝。話雖如此,開啟命令提示字元並輸入下列命令︰

> npm install -g yo generator-aspnet gulp bower

將會安裝 Yeoman (由"yo") 在全域位置 (-g) 以及 gulp (如工作自動化的工具) 和 bower (用戶端程式庫管理員)。請注意 Yeoman 隨附的產生器,包括 ASP.NET 產生器和 Visual Studio 程式碼擴充功能產生器的數目。先前的命令列中的產生器 aspnet 選項將會下載並安裝 ASP.NET 核心的產生器,以簡化您的工作。準備好時,使用 cd (或 chdir) 命令,移至資料夾,您要建立新的應用程式 (cd C:\temp)。此時,輸入下列命令列︰

> yo aspnet

這會開啟 Yeoman ASP.NET 產生器,您可以看到在 [圖 2

啟動 Yeoman 產生器
[圖 2 開始 Yeoman 產生器

選取 Web 應用程式範本,然後按 Enter。在下一個畫面中,輸入 CarModels 做為應用程式名稱,然後按 Enter。產生器會定義為基礎的應用程式名稱大小寫的應用程式的根命名空間。因此,如果 CarModels 應用程式名稱,則根命名空間也會 CarModels;但是,如果您輸入 carmodels 做為應用程式的名稱,則您的根命名空間會 carmodels 或 carModels,分別。這個時小心指定應用程式名稱。幾秒鐘,Yeoman 完成之後產生新的 ASP.NET 核心應用程式至名為 CarModels 的子資料夾。使用 ASP.NET 核心釋放的未來,您也將能夠使用.NET 核心 CLI scaffolding Web 應用程式。您將使用命令列將看起來如下︰

> dotnet new

目前版本的 cli 不支援 scaffolding Web 應用程式。相反地,它會產生空的主控台應用程式,所以這是為什麼您 Yeoman 看這裡的動作中另一個原因。藉由撰寫"cd CarModels"輸入 CarModels 資料夾,然後輸入 「 程式碼 」,使 Visual Studio 程式碼將會啟動,開啟目前的資料夾和其內容。當 Visual Studio 程式碼開啟資料夾時,它會掃描已知的專案檔案名稱,例如 project.json,package.json 或.sln MSBuild 方案檔案。ASP.NET Core 專案中,在 Visual Studio 程式碼尋找 project.json、 收集相依性資訊,並以正確方式組織程式碼檔案和子資料夾。第一次的專案已經開啟,Visual Studio 程式碼偵測到遺漏的 NuGet 封裝,並提供讓您還原。

按一下資訊列上的還原,並等候下載 NuGet 套件。完成時,您可以利用所有的進階程式碼編輯功能的 Visual Studio 程式碼撰寫和編輯程式碼檔案,並重複使用絕大部分的 ASP.NET MVC 您現有的技能。事實上,Visual Studio 程式碼不只支援 C# 中,但它也提供語法顏色標示和其他進階的功能撰寫 ASP.NET 核心應用程式,包括.cshtml、 CSS 樣式表、 JavaScript 和 json 檔案的所有檔案類型。

使用 Entity Framework 7 建立資料模型

有一個空的 ASP.NET 核心應用程式之後下, 一個步驟是建立資料模型使用 Entity Framework 7,新版本的 microsoft 所提供的 ASP.NET 核心支援常用的物件關聯式對應程式。在撰寫本文時,Entity Framework 7 處於 RC1。建立模型就會從命令提示字元中執行適當的 dnx 命令完成,並牽涉到幾個 NuGet 封裝。第一次的 NuGet 封裝稱為 EntityFramework.MicrosoftSqlServer,而會自動參考新建立的專案。第二個 NuGet 封裝稱為 EntityFramework.MicrosoftSqlServer.Design,而必須手動加入至專案相依性。若要這樣做,請在 Visual Studio 程式碼開啟 project.json 檔案,並尋找相依性節點內的下列行︰

"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",

此行之後,加入下列︰

"EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final",

請注意,這兩個套件必須具有相同的版本號碼會在未來的版本中變更。儲存 project.json。Visual Studio 程式碼會偵測遺漏的 NuGet 封裝,並會提示您輸入一次封裝還原。像往常一樣,接受其提供。

現在透過 ASP.NET 核心專案所在的資料夾,開啟命令提示字元。Dnx 環境提供 ef 命令中,可讓您從命令列產生實體資料模型。此命令會提供額外的命令,例如資料庫、 dbcontext 和移轉。資料庫命令可讓您管理資料庫、 dbcontext 可讓您建立的 DbContext 類型和實體,結構和移轉可讓您使用 [程式碼移轉。您將使用 dbcontext 命令來產生 DbContext 類別和所需的實體。您可以撰寫 dnx ef 來檢視可用的命令的清單 (請參閱 [圖 3),或直接輸入完整的命令。

可用的實體架構命令的清單
[圖 3 份命令清單可用的實體架構

準備好時,寫入下列的命令列︰

> dnx ef dbcontext scaffold "Server=.\sqlexpress;Database=Cars;Trusted_Connection=True;" 
EntityFramework.MicrosoftSqlServer --outputDir Models

Dbcontext 命令會使用一個稱為 scaffold,從提供的連接字串中指定的資料庫中產生適當的 DbContext 和實體的選項。當然,您必須將與您的伺服器名稱。EntityFramework.MicrosoftSqlServer 指定將用於樣板的資料提供者。請注意如何指定輸出目錄,以及在資料模型透過-outputDir 選項,也就是區分大小寫。在此情況下,輸出目錄是名為模型,這已經存在於專案中,為 DbContext 類別和實體的適當的邏輯位置的資料夾。之後完成的訊息,您會看到如何 [模型] 資料夾包含名為 CarsContext.cs,其中包含繼承自 DbContext 的 CarsContext 類別,類別檔案和檔案,稱為 Cars.cs 會定義類別,稱為汽車,公開從汽車資料表在資料庫中的資料行對應的屬性 (請參閱 [圖 4)。請注意,沒有任何選項來控制實體名稱的複數表示,因此這應該手動管理已超出本文範圍。

汽車模型類別在程式碼編輯器
[圖 4 汽車模型類別在程式碼編輯器

此時,您必須提供應用程式將用於連接到資料庫的連接字串。而不是將連接字串放到 Web.config 檔案中,這可以完成啟動類別中。這會宣告一個稱為 ConfigureServices,可設定相依性插入 (DI) 透過必要的服務執行階段會叫用,建議您將提供的連接字串的方法。ConfigureServices 會呼叫服務,Microsoft.Extensions.DependencyInjection.IServiceCollection,會儲存一份將插入的服務類型的引數。請考慮這行程式碼︰

var connection = @"Server=.\sqlexpress;Database=Cars;Trusted_Connection=True;";
services.AddEntityFramework()
  .AddSqlServer()
  .AddDbContext<CarsContext>(options => options.UseSqlServer(connection));

第二行的用途是註冊 DI 必要的 Entity Framework 和 SQL Server 服務,並註冊為服務的 DbContext 類別。AddDbContext 方法可讓您指定透過 DbContextBuilder.UseSqlServer 方法,透過呼叫選項的委派叫用的連接字串。這兩行必須放在一開始 ConfigureServices 方法,其完整的程式碼所示的 [圖 5

[圖 5 註冊相依性插入的 DbContext 類別

public void ConfigureServices(IServiceCollection services)
{
  // Add framework services
  var connection = @"Server=.\sqlexpress;Database=Cars;Trusted_Connection=True;";
  services.AddEntityFramework()
    .AddSqlServer()
    .AddDbContext<CarsContext>(options => options.UseSqlServer(
      connection));
  services.AddEntityFramework()
    .AddSqlite()
    .AddDbContext<ApplicationDbContext>(options => options.UseSqlite(
      Configuration["Data:DefaultConnection:ConnectionString"]));
  services.AddIdentity<ApplicationUser, IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();
  services.AddMvc();
  // Add application services
  services.AddTransient<IEmailSender, AuthMessageSender>();
  services.AddTransient<ISmsSender, AuthMessageSender>();
}

到目前為止,您已實作您的資料模型。現在您需要的方式來公開 UI 會叫用來處理資料的動作。

實作 MVC 控制器

ASP.NET Core 支援 Web API 服務和 MVC 應用程式。Web API 是慣用的方法,如果您要建置符合 rest 限制的服務。目前的範例是使用 Web 應用程式 UI 中,因此您將使用 MVC。您可以在任何 ASP.NET MVC 應用程式中實作 MVC 控制器和檢視。控制站是此類別會繼承自 Microsoft.AspNet.Mvc.Controller 以及公開 (expose) UI (或其他用戶端) 可以叫用來處理資料的動作。若要加入一個控制器,Visual Studio 程式碼中以滑鼠右鍵按一下 Controllers 資料夾,並選取新檔案。文字方塊中出現時,輸入 CarsController.cs 做為新的檔案名稱。這會將新增的新 C# 檔案,也會在程式碼編輯器中開啟。新的控制器需要實作的方法可讓您查詢、 加入和刪除資料。完整的清單中顯示控制器的 [圖 6 (含註解)。雖然程式碼看起來有點長,IntelliSense 會協助您更快速且有效率地撰寫程式碼。

[圖 6 實作適用於資料在 MVC 控制器

using System.Linq;
using Microsoft.AspNet.Mvc;
using CarModels.Models;
namespace CarModels.Controllers
{
  public class CarsController : Controller
  {
    // Declares the DbContext class
    private CarsContext dataContext;
    // The instance of DbContext is passed via dependency injection
    public CarsController(CarsContext context)
    {
      this.dataContext=context;
    }
    // GET: /<controller>/
    // Return the list of cars to the caller view
    public IActionResult Index()
    {
      return View(this.dataContext.Cars.ToList());
    }
    public IActionResult Create()
    {
      return View();
    }
    // Add a new object via a POST request
    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult Create(Cars car)
    {
      // If the data model is in a valid state ...
      if (ModelState.IsValid)
      {
        // ... add the new object to the collection
        dataContext.Cars.Add(car);
        // Save changes and return to the Index method
        dataContext.SaveChanges();
        return RedirectToAction("Index");
      }
      return View(car);
    }
    [ActionName("Delete")]
    public IActionResult Delete(int? id)
    {
      if (id == null)
      {
        return HttpNotFound();
      }
      Cars car = dataContext.Cars.Single(m => m.id == id);
      if (car == null)
      {
        return HttpNotFound();
      }
      return View(car);
    }
    // POST: Cars/Delete/5
    // Delete an object via a POST request
    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public IActionResult DeleteConfirmed(int id)
    {
      Cars car = dataContext.Cars.SingleOrDefault(m => m.id == id);
      // Remove the car from the collection and save changes
      dataContext.Cars.Remove(car);
      dataContext.SaveChanges();
      return RedirectToAction("Index");
    }
  }
}

在 [摘要] 中,您有四個動作︰ 索引中,汽車的清單傳回至呼叫端] 檢視中。建立時,它會將新增的新車,透過 HTTP POST 要求。Delete 和 DeleteConfirmed,等待使用者確認,並分別移除透過 HTTP POST 要求,汽車。關於索引,您也可以撰寫 LINQ 查詢,以傳回篩選的清單。

新增和設計 MVC 檢視

在 MVC 檢視是資料繫結的網頁構成應用程式的 UI。在此範例中,您需要三個檢視︰ 索引頁顯示的汽車; 清單[建立] 頁面,可讓使用者加入新的汽車。並會要求從資料庫刪除一輛車之前確認刪除頁面。檢視必須組織成位於 [檢視] 資料夾,其名稱由 Web 路由要求傳送至應用程式中的子資料夾中。比方說,如果您建立名為汽車的資料夾,在這個資料夾內的所有檢視將會都開啟透過 ApplicationName/汽車路由慣例。假設您已建立名為 [檢視] 下的汽車的資料夾,以滑鼠右鍵按一下它,並選取新的檔案。輸入 Index.cshtml 做為檔案名稱,然後按 Enter 鍵,使新檔案立即可在程式碼編輯器。根據它的副檔名,Visual Studio 程式碼會將它辨識為 Razor 檔案。此檢視來顯示完整的資料表; 的項目清單每個資料列顯示車子模型、 製造商名稱和超連結,使用者可以按一下 [刪除的項目。[圖 7 Index.cshtml 網頁的完整程式碼會顯示。

[圖 7 建立索引檢視

@model IEnumerable<CarModels.Models.Cars>
@{
  ViewBag.Title = "Cars";
}
<h2>Car models</h2>
<p>
  <a asp-controller="Cars" asp-action="Create">Add New</a>
</p>
<table class="table">
  <tr>
    <th>Car Model</th>
    <th>Brand</th>
  </tr>
  @foreach (var item in Model)
  {
    <tr>
      <td>
        @Html.DisplayFor(modelItem => item.CarModel)
      </td>
      <td>
        @Html.DisplayFor(modelItem => item.Brand)
      </td>
      <td>
        <a asp-controller="Cars" asp-action="Delete"
          asp-route-id="@item.id">Delete</a>
      </td>
    </tr>
  }
</table>

請注意標記是如何運用所謂的模型繫結來指定模型類別的.NET 類型,並叫用,並繫結其屬性的每個資料列。另外而且請注意 [刪除] 連結指向汽車控制器,提供透過模型繫結項目 id 的名稱相同的動作的方式。同樣地,動作汽車控制器中稱為 「 建立 」 動作來建立點,並開啟新的檢視,可讓您新增新的物件。此檢視會呼叫建立],您可以建立一個執行相同的步驟之前相同的索引檢視,這表示將 Create.cshtml 檔案加入至 Views\Cars 子資料夾。在此新檢視中,您基本上會建立資料表單,其中使用者可將資訊寫入根據模型屬性,提供將資訊提交到繫結控制器的按鈕。[圖 8 示範如何完成這項作業。

[圖 8 建立檢視的定義

@model CarModels.Models.Cars
@{
  ViewBag.Title = "New car";
}
<h2>@ViewData["Title"]</h2>
<form asp-controller="Cars" asp-action="Create" method="post"
  class="form-horizontal" role="form">
  <div class="form-horizontal">
    <div asp-validation-summary="ValidationSummary.All" class="text-danger"></div>
    <div class="form-group">
      <label asp-for="CarModel" class="col-md-2 control-label"></label>
      <div class="col-md-10">
        <input asp-for="CarModel" class="form-control" />
        <span asp-validation-for="CarModel" class="text-danger"></span>
      </div>
      <label asp-for="Brand" class="col-md-2 control-label"></label>
      <div class="col-md-10">
        <input asp-for="Brand" class="form-control" />
        <span asp-validation-for="Brand" class="text-danger"></span>
      </div>
    </div>
    <div class="form-group">
      <div class="col-md-offset-2 col-md-10">
        <input type="submit" value="Create" class="btn btn-default" />
      </div>
    </div>
  </div>
</form>

最後一個步驟加入名為 Delete.cshtml Views\Cars 子資料夾的新檢視。加入時,輸入程式碼所示 [圖 9, ,可顯示將會刪除項目的詳細的資訊,並提供一個選項來送出或取消的變更。

[圖 9 建立刪除檢視

@model CarModels.Models.Cars
@{
  ViewData["Title"] = "Delete";
}
<h2>Delete</h2>
<h3>Are you sure you? The operation cannot be undone.</h3>
<div>
  <h4>Cars</h4>
  <hr />
  <dl class="dl-horizontal">
    <dt>
      @Html.DisplayNameFor(model => model.Brand)
    </dt>
    <dd>
      @Html.DisplayFor(model => model.Brand)
    </dd>
    <dt>
      @Html.DisplayNameFor(model => model.CarModel)
    </dt>
    <dd>
      @Html.DisplayFor(model => model.CarModel)
    </dd>
  </dl>
  <form asp-action="Delete">
    <div class="form-actions no-color">
      <input type="submit" value="Delete" class="btn btn-default" /> |
      <a asp-action="Index">Back to List</a>
    </div>
  </form>
</div>

現在您有資料模型、 動作和 UI。這表示您準備好開始測試範例應用程式。

執行應用程式

您可以直接從 Visual Studio 程式碼執行的 ASP.NET 核心應用程式。若要這麼做,開啟 [命令選擇區中,輸入 dnx,然後按 Enter。接下來,選取 dnx: 執行命令,然後按 Enter。然後按一下 [dnx web。這是相當於在命令提示字元中輸入 dnx web。在未來版本中,您將撰寫 dotnet 從命令列執行。此時,Visual Studio 程式碼會開始 Kestrel,ASP.NET 核心應用程式的開放原始碼 Web 伺服器 (bit.ly/1rdEfxV),以裝載 Web 應用程式。在 Visual Studio 程式碼,也會看到其輸出和執行階段,包括堆疊追蹤發生例外狀況,這特別適用於偵錯會傳送任何訊息 Kestrel 重新導向的主控台視窗。根據預設,Kestrel 會啟動接聽連接埠 5000,這表示您可以用來開啟您最愛的瀏覽器,並輸入 http://localhost:5000/ 啟動應用程式。圖 10 顯示執行的應用程式。

執行的應用程式
[圖 10 執行的應用程式

在瀏覽器的 Web 位址列中輸入 [localhost:5000 / 汽車開啟預設檢視汽車控制站。如您所見的 [圖 11, ,應用程式會如預期般顯示汽車的清單。

顯示資料庫中的汽車清單應用程式
[圖 11 汽車清單顯示在資料庫中的應用程式

按一下 [加入新,所以您需要一個選項來加入新項目 (請參閱 圖 12)。當您按一下 [建立新的項目儲存到資料庫和應用程式將會瀏覽回到前一個檢視,您會看到更新的汽車清單的位置。

加入新項目
[圖 12 加入新項目

現在,按一下您先前加入的車輛附近刪除超連結。刪除檢視隨即出現,顯示選取的項目詳細資料,並要求使用者確認 (請參閱 圖 13)。只要按一下 [刪除移除的項目,並傳回至索引。請記住,這是跨平台 Web 應用程式,因此可以將它發行至 Linux、 OS X 和 Windows。

刪除項目
[圖 13] 刪除項目

關於發佈您的應用程式的提示

已發行您的 ASP.NET 核心應用程式,包括 (但不是限於) 的替代方案 Microsoft Azure 和 IIS。第一個選項涉及啟用 Git 整合,而第二個目前牽涉到 DNX 公用程式 (dnu) 和 dnu 發佈命令列,並將涉及 dotnet 發行命令列在未來的版本。Microsoft 資源中已經討論過發行。在討論發佈到 Azure bit.ly/22QXTh6, ,而使用 dnu 討論位元bit.ly/1TWvfWh

總結

Visual Studio 程式碼可讓您撰寫 ASP.NET 核心應用程式利用所有的 C# 以及可在專案中的其他檔案類型的進化編輯功能。跨平台本身,它是完美的夥伴,若要開始撰寫用於 Linux、 OS X 和 Windows 的 MVC 應用程式。Entity Framework 不同平台的可用性和重複使用您現有的 C# 和 MVC 技能的機會,讓撰寫以資料為中心的 Web 應用程式更令人讚嘆的經驗。別忘了看看 ASP.NET 核心和.NET 核心文件,.NET Core CLI 的相關更新。


Alessandro Del Sole 2008年之後已經是 Microsoft MVP。 獲得一年五倍的 MVP,他著有許多書籍、 電子書,說明影片和使用 Visual Studio.NET 開發相關的文件。Del Sole 擔任方案開發人員專家大腦 Sys (www.brain-sys.it),將焦點放在.NET 開發訓練和諮詢。您也可以關注他的 Twitter: @progalex

感謝以下的微軟技術專家對本文的審閱: James McCaffrey
Dr.James McCaffrey 適用於在美國華盛頓州 Redmond 的 Microsoft Research他曾在包括 Internet Explorer 和 Bing 的數個 Microsoft 產品。Dr.McCaffrey 可以到達 jammc@microsoft.com