日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core系列 :3 、使用多个项目

發布時間:2023/12/4 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core系列 :3 、使用多个项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過前面的兩篇文章.NET Core系列 : 1、.NET Core 環境搭建和命令行CLI入門 和.NET Core系列 : 2 、project.json 這葫蘆里賣的什么藥,我們已經知道如何創建新的項目,如何生成并運行我們的應用程序,也知道(大致) project.json 文件中的內容是什么意思。但大多數項目往往也需要多個項目或引用的類庫。我們要創建類庫項目和應用程序項目。在應用程序中,如何引用我們的類庫。

創建應用項目 File -> New Application

這個很熟悉了吧,輸入下面的命令:

mkdir DotnetNewApp

cd DotnetNewApp

dotnet new

dotnet restore

dotnet build

dotnet run

[root@Mono ~]# mkdir DotnetNewApp
[root@Mono ~]# cd DotnetNewApp/
[root@Mono DotnetNewApp]# dotnet new
Created new C# project in /root/DotnetNewApp.
[root@Mono DotnetNewApp]# dotnet restore
log? : Restoring packages for /root/DotnetNewApp/project.json...
log? : Writing lock file to disk. Path: /root/DotnetNewApp/project.lock.json
log? : /root/DotnetNewApp/project.json
log? : Restore completed in 8774ms.
[root@Mono DotnetNewApp]# dotnet build
Project DotnetNewApp (.NETCoreApp,Version=v1.0) will be compiled because expecte????? d outputs are missing
Compiling DotnetNewApp for .NETCoreApp,Version=v1.0

Compilation succeeded.
??? 0 Warning(s)
??? 0 Error(s)

Time elapsed 00:00:03.7500023


[root@Mono DotnetNewApp]# dotnet run
Project DotnetNewApp (.NETCoreApp,Version=v1.0) was previously compiled. Skippin????? g compilation.
Hello World!

?

我們創建好了應用項目,接下來我們創建一個類庫項目

創建類庫項目 File -> New Library

dotnet new 默認創建的控制臺項目,他還可以創建其他項目類型 :

[root@Mono DotnetNewApp]# dotnet new -t -h
Unrecognized type: -h
Avaiable types for C# :
- Console
- Web
- Lib
- xunittest

看這個輸出,單詞都拼錯了,Avaiable 應該是Available,已經被提了bug?https://github.com/dotnet/cli/pull/3822?,除了控制臺,還可以創建Web,Lib和xunittest,項目類型和使用Visual Studio 2015一致。web是asp.net core 模板,xunittest是測試項目,Lib就是我們需要創建的類庫項目類型,所以我們將加上-t 參數指定為Lib,Scott Hanselman 的博文?Exploring dotnet new with .NET Core?講的也很詳細:

[root@Mono DotnetNewApp]# cd ..
[root@Mono ~]# mkdir DotnetNewLib
[root@Mono ~]# cd DotnetNewLib/
[root@Mono DotnetNewLib]# dotnet new -t Lib
Created new C# project in /root/DotnetNewLib.
[root@Mono DotnetNewLib]# pwd
/root/DotnetNewLib
我們創建完成了一個C#類庫項目 /root/DotnetNewLib

我們來對比下控制臺和類庫項目的區別是什么?前面一篇文章《.NET Core系列 : 2 、project.json 這葫蘆里賣的什么藥》我們已經簡單提及。我們來看下類庫項目的project.json:

{
? "version": "1.0.0-*",
? "buildOptions": {
??? "debugType": "portable"
? },
? "dependencies": {},
? "frameworks": {
??? "netstandard1.6": {
????? "dependencies": {
??????? "NETStandard.Library": "1.6.0"
????? }
??? }
? }
}

?

類庫的編譯選項buildOptions 少了 emitEntryPoint ,這是一個類庫,所以不需要入口。依賴的框架不是netcoreapp1.0,而是用了一個netstandard1.6替代,上面一篇文章我們簡要說明了一下,本質上來說netcoreapp1.0和.NET 4.6.3 都是NETStardard 1.6的實現,Mono 也正在調整NETStardard,https://github.com/mono/mono/tree/netstandard。

本質上來說,NETStandard.Library 是一個目標最低支持基礎類庫,這樣就可以更好的向前兼容性,在現有的平臺出現新的版本時(如.net core 1.1 甚至 2.0)而無需重新發布新的變化。具體參考 https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md ,目前最新的表格:

如何理解這個表格

  • 如果一個類庫指定.NET平臺標準1.3版本,那么它僅能夠運行在.NET Framework 4.6或更新的框架、Universal Windows Platform 10(UWP)、DNX Core 5.0和Mono/Xamarin這些平臺上。

  • 如果一個類庫指定.NET平臺標準1.3版本,那么它能夠引用(原文:consume)所有來自之前的.NET平臺標準的版本(1.2、1.1、1.0)。

如果我們想要我們的類庫項目,也可以更廣泛地使用,比如舊版本的.Net項目也可以用, 我們可以降低修改為 netstandard1.0,這意味著所有.Net 4.5 或更高版本的運行時兼容,再加上Windows Phone Silverlight (8.0 + 8.1)。值得注意的.Net 4.5 以下版本不兼容這個新的NetStandard 版本化方案。在我們的控制臺應用程序,我們針對?Microsoft.NETCore.App?的依賴項。這是指類型的平臺,并且在我們的應用程序的運行時上聲明依賴項。?

我們的控制臺程序將要依賴于我們這個類庫項目做些計算邏輯,我們就用它來做個2個數相乘吧,修改Class1為Calculator,Method1修改為Multi:

namespace DotnetNewLib
{
??? public class Calculator
??? {
??????? public int Multi(int x,int y)
??????? {
???????????? return x * y;
??????? }
??? }
}

下面進入我們今天的重點是項目的引用.

?

項目引用Project References

引用項目和引用Nuget包不同的地方主要是 "target": "project" 這個屬性,這和前面的Microsoft.NETCore.App 的依賴屬性"type": "platform"類似。

下面我們給我們的控制臺應用添加類庫DotnetNewLib的依賴,在DotnetNewApp的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"
??????? },
?????? "DotnetNewLib":{
?????????? "target":"project"
??????? }
????? },
????? "imports": "dnxcore50"
??? }
? }
}
這么寫有個前提是你的DotnetNewApp 和DotnetNewLib文件夾有相同的父文件夾,這里有兩件事需要注意,每當你dotnet build DotnetNewApp,他就會以遞歸方式嘗試dotnet build DotnetNewLib。第二件需要注意的是build而不是執行restore,你需要確保這兩個項目都運行了dotnet restore,當然你可以在他們的父文件夾執行dotnet restore。所有的子文件夾里面的project.json 都會被恢復。

接下來,我們在控制臺應用DotnetNewApp里調用DotnetNewLib的乘法:

using System;
using DotnetNewLib;

?

namespace ConsoleApplication
{
??? public class Program
??? {
??????? public static void Main(string[] args)
??????? {
??????????? Calculator calc = new Calculator();
??????????? var result = calc.Multi(9,8);
??????????? Console.WriteLine($"Hello World is {result} ");
??????? }
??? }
}

?

編譯和運行

我們切換到DotnetNewApp 文件夾下,我們現在可以編譯和運行這個應用了,同時也會編譯我們的類庫項目DotnetNewLib。

[root@Mono DotnetNewApp]# dotnet build
Project DotnetNewLib (.NETStandard,Version=v1.6) will be compiled because expected outputs are missing
Compiling DotnetNewLib for .NETStandard,Version=v1.6

Compilation succeeded.
??? 0 Warning(s)
??? 0 Error(s)

Time elapsed 00:00:02.8849475
Project DotnetNewApp (.NETCoreApp,Version=v1.0) will be compiled because dependencies changed
Compiling DotnetNewApp for .NETCoreApp,Version=v1.0

Compilation succeeded.
??? 0 Warning(s)
??? 0 Error(s)

Time elapsed 00:00:03.0273700


[root@Mono DotnetNewApp]# dotnet run
Project DotnetNewLib (.NETStandard,Version=v1.6) was previously compiled. Skipping compilation.
Project DotnetNewApp (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
Hello World is 72

到這里我們成功構建了一個類庫項目和一個控制臺項目,控制臺引用類庫項目完成乘法運算,這雖然是一個很簡單的多項目應用,我們通過這個最簡單的項目講解了dotnet core的多項目應用如何進行開發和注意事項。

相關文章:

  • .NET Core & ASP.NET Core 1.0在Redhat峰會上正式發布

  • .NET Core:面向未來的開源跨平臺開發技術

  • 微軟說它深愛著Linux,現在它用行動證明了

  • 移植.NET Core計劃,整合各平臺變得更簡單了!

  • ASP.NET Core 介紹

  • 通過幾個Hello World感受.NET Core全新的開發體驗

  • ASP.NET Core 運行原理剖析1:初始化WebApp模版并運行

  • .NET Core系列 : 1、.NET Core 環境搭建和命令行CLI入門

  • .NET Core系列 : 2 、project.json 這葫蘆里賣的什么藥

  • Asp.Net Core 發布和部署( MacOS + Linux + Nginx )

  • Asp.Net Core 發布和部署(Linux + Jexus )

  • 學習ASP.NET Core,你必須了解無處不在的“依賴注入”

  • .NET Core應用類型(Portable apps & Self-contained apps)

  • .NET Core 1.0發布:微軟開源跨平臺大布局序幕

  • ASP.NET Core 運行原理剖析2:Startup 和 Middleware(中間件)

  • 在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序

  • ASP.NET Core 開發-Entity Framework (EF) Core 1.0 Database First

  • 擁抱.NET Core,跨平臺的輕量級RPC:Rabbit.Rpc

  • 使用 dotnet watch 開發 ASP.NET Core 應用程序

  • ASP.NET Core 發布至Linux生產環境 Ubuntu 系統

  • ASP.NET Core Docker部署

  • ASP.NET Core "完整發布,自帶運行時" 到jexus

  • 全球首發免費的MySql for Entity Framework Core

  • ASP.NET Core開發-使用Nancy框架

  • .NET Core全新路線圖

  • 解決.NET Core中MailKit無法使用阿里云郵件推送服務的問題

  • .NET Core第三方開源Web框架YOYOFx

  • ubuntu16.4下用jexus部署asp.net core rtm

原文地址:http://www.cnblogs.com/shanyou/p/5723192.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

贊賞

人贊賞

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的.NET Core系列 :3 、使用多个项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。