第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

.NET Core 2.2 中的 Metapackage 和 SDK 有什么區(qū)別?

.NET Core 2.2 中的 Metapackage 和 SDK 有什么區(qū)別?

C#
牛魔王的故事 2022-10-23 13:54:51
我試圖在 .NET Core 術(shù)語(yǔ)中區(qū)分這兩個(gè)概念。我將嘗試用一個(gè)例子來說明我的困惑。當(dāng)我創(chuàng)建一個(gè)新的類庫(kù)項(xiàng)目(例如:)dotnet new classlib -o myclasslib時(shí),生成的.csproj文件如下所示:<Project Sdk="Microsoft.NET.Sdk">  <PropertyGroup>    <TargetFramework>netstandard2.0</TargetFramework>  </PropertyGroup></Project>到目前為止,一切都很好?,F(xiàn)在,如果我嘗試在這個(gè)項(xiàng)目中添加 WebApi 控制器類(例如,為了在創(chuàng)建為: 的主 WebApi 應(yīng)用程序中動(dòng)態(tài)加載插件dotnet new webapi -o mywebapi),我將需要使用ControllerBase類[ApiController]和[HttpGet]屬性之類的東西。為了簡(jiǎn)單起見,我只是從 ControllerBase 派生 MyController ,如下所示:using System;namespace myclasslib{    public class MyController : Microsoft.AspNetCore.Mvc.ControllerBase    {    }}試圖用dotnet build我來構(gòu)建這個(gè)錯(cuò)誤:錯(cuò)誤 CS0234:命名空間“Microsoft”中不存在類型或命名空間名稱“AspNetCore”(您是否缺少程序集引用?)這是意料之中的,因?yàn)槲覄?chuàng)建了 classlib 項(xiàng)目,但是如果將 .csproj 中的 SDK 更改為Sdk="Microsoft.NET.Sdk.Web"并更改TargetFramework為netcoreapp2.2(希望解決對(duì)ControllerBase類的引用),如下所示:<Project Sdk="Microsoft.NET.Sdk.Web">  <PropertyGroup>    <TargetFramework>netcoreapp2.2</TargetFramework>  </PropertyGroup></Project>構(gòu)建項(xiàng)目時(shí)出現(xiàn)同樣的錯(cuò)誤。SDK不應(yīng)該包含我構(gòu)建項(xiàng)目所需的一切嗎?如果我創(chuàng)建通常的 webapi 項(xiàng)目(例如dotnet new webapi -o mywebapi),生成的.csproj看起來像這樣:<Project Sdk="Microsoft.NET.Sdk.Web">  <PropertyGroup>    <TargetFramework>netcoreapp2.2</TargetFramework>    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>  </PropertyGroup>  <ItemGroup>    <PackageReference Include="Microsoft.AspNetCore.App" />    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />  </ItemGroup></Project>我注意到 SDK 與我設(shè)置的 SDK 相同,但還添加了一個(gè)元包:<PackageReference Include="Microsoft.AspNetCore.App" />那么,如果我們已經(jīng)指定要使用 Microsoft.NET.Sdk,為什么還需要顯式添加元包。網(wǎng)絡(luò)?另一個(gè)問題:如果我們沒有在 PackageReference 中指定一個(gè)元包版本(比如在這個(gè)生成的 webapi .csproj 中),那么使用什么版本的元包?
查看完整描述

1 回答

?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

SDK 只是構(gòu)建工具和 .NET Core 框架本身。ASP.NET Core 是一組 NuGet 包。本質(zhì)上是 .NET Core 框架!= ASP.NET Core 代碼。元包的概念只是切線相關(guān)的。所謂的“ASP.NET Core”實(shí)際上是幾十個(gè)單獨(dú)的 NuGet 包。您可以單獨(dú)引用每個(gè),但正如您可以想象的那樣,這既煩人又容易出錯(cuò)。元包本質(zhì)上是一個(gè)依賴于多個(gè)其他 NuGet 包的 NuGet 包。

因此,通過僅拉入元包,基本上所有元包的依賴項(xiàng)都被拉入。因此,您可以簡(jiǎn)單地添加一個(gè)包引用,Microsoft.AspNetCore.App然后您就可以參加比賽了。但是,這樣做的缺點(diǎn)是您可能會(huì)獲得實(shí)際上不需要的依賴項(xiàng)。對(duì)于像 Web 應(yīng)用程序這樣的東西來說,這并不是什么大問題,因?yàn)榭梢孕藜粢蕾囮P(guān)系,但類庫(kù)不應(yīng)該有過多的依賴關(guān)系。因此,您應(yīng)該只從Microsoft.AspNetCore命名空間中引用您實(shí)際需要的單個(gè) NuGet 包。


查看完整回答
反對(duì) 回復(fù) 2022-10-23
  • 1 回答
  • 0 關(guān)注
  • 98 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)