簡體   English   中英

在ASP.NET項目中創建和使用.NET Core類庫

[英]Creating and using .NET Core class library in ASP.NET project

我從Visual Studio開始了一個新的ASP.NET Core WebApi項目。 項目已初始化,並且啟動沒有問題。

現在,我想添加一個.NET Core類庫以包含與應用程序分離的邏輯。 因此,我右鍵單擊src文件夾,選擇Class LOibrary (.NET Core) Add -> New Project然后選擇Class LOibrary (.NET Core)

在我的類庫中,我創建了一個新的中間件:

namespace MyClassLib
{
    public class MyMiddleware
    {
        private readonly RequestDelegate _next;

        public MyMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public async Task Invoke(HttpContext context)
        {
            await _next.Invoke(context);
        }
    }
}

並為其創建擴展方法:

namespace MyClassLib
{
    public static class MyMiddlewareExtensions
    {
        public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder builder)
        {
            return builder.UseMiddleware<MyMiddleware>();
        }
    }
}

到目前為止,沒有任何幻想。

在我的Web API中,我添加了對該項目的引用:

"dependencies": {
    "Microsoft.NETCore.App": {
        "version": "1.0.0",
        "type": "platform"
    },
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "MyClassLib": "1.0.0-*"
}

但是,當我嘗試在WebApi startup類中使用新的類庫時,似乎無法識別它- using MyClassLib紅色顯示using MyClassLib (錯誤),並且不允許我使用其中的任何類。

我在這里想念什么? 在.NET Core之前,這是我一直都在做的事情...

編輯

奇怪,但是如果我禁用ReSharper,則一切正常。 如果我重新啟用ReSharper,它將再次顯示錯誤,但仍可以編譯。 我在RC1上看到過在GitHub上遇到此問題的人的帖子-但有人提到它已修復。 有誰知道我如何繼續使用ReSharper和.NET Core?

問題可能是NuGet畫廊中有一個名為MyClassLib現有軟件包 ,其版本為1.0.0 ,因此NuGet可能會將其下拉並引用。

為了指示項目系統使用本地項目而不是已發布的程序包,請嘗試執行

"MyClassLib": { "target": "project" }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM