---
# System prepended metadata

title: 在 .Net Core 3.0 以上使用 ASP.NET Core API 時，無法正確參考到需要的功能
tags: [.Net Core]

---

# 在 .Net Core 3.0 以上使用 ASP.NET Core API 時，無法正確參考到需要的功能

在 .Net Core 專案中有時候會遇到一些情況是需要使用 ASP.NET Core 底層的 API
之前都是上網查一下他是屬於那顆 Nuget Library 裡面，然後再把它安裝起來，通常就能解決了

這次遇到的狀況是需要使用 .Net Core 3.0 才出現的 GetEndpoint()
一如既往的去查了文件，發現是在 **Microsoft.AspNetCore.Http.Abstractions.dll** 裡面

![](https://i.imgur.com/rlJWHPI.png)

裝完後才發現仍然會錯誤，而且就算把其他的相關 Library 也裝上後，仍然是顯示找不到該方法

這時突然發現，這些相關套件很多都是 2.2.0 的版本，但現在都是 .Net 6 了，一堆版本都還是 2 開頭太不合常理了

![](https://i.imgur.com/EuEMOap.png)

找到官方文件之後發現，在 .Net Core 3.0 之後，許多底層的功能已經不會特別發布為獨立的 Nuget Library 了，現在會根據 Project 所指定的 SDK 類型去決定要參考那些 SDK，就可以取得該 Project 類型所需要的底層 Library 了
* Microsoft.NET.Sdk.Web
* Microsoft.NET.Sdk.Razor
* ...

![](https://i.imgur.com/4EaYJ4D.png)

因此像這次是需要在某個 Class Project 裡面需要使用到 GetEndpoint() 的功能，在 .csproj 內加入 **<FrameworkReference>** 時，就能正確的使用到當前專案對應的 SDK 所提供的功能了

``` xml
<ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
```
    
![](https://i.imgur.com/PMVXi6U.png)


Reference
---

* https://learn.microsoft.com/zh-tw/aspnet/core/fundamentals/target-aspnetcore?view=aspnetcore-7.0&tabs=visual-studio#use-the-aspnet-core-shared-framework
* https://blog.darkthread.net/blog/add-aspnetcore-ref-in-classlib/

###### tags: `.Net Core`