在ASP.NET项目中创建和使用.NET Core类库

时间:2016-08-03 14:30:32

标签: .net asp.net-core .net-core asp.net-core-1.0

我从Visual Studio开始了一个新的ASP.NET Core WebApi项目。项目初始化并开始没有问题。

现在我想添加一个.NET Core类库来包含与app分离的逻辑。我右键点击src文件夹,选择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>();
        }
    }
}

到目前为止还没什么特别的。

在我的网络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红色(错误)并且不允许我使用其中的任何类。

我在这里缺少什么?在.NET Core之前,这是我以前常常做的事情......

修改

奇怪,但如果我禁用ReSharper比一切正常。如果我重新启用ReSharper而不是再次显示错误但仍然编译。我在RC1上遇到过这个问题的人看过GitHub上的帖子 - 但有人提到它是固定的。任何人都知道如何继续使用ReSharper和.NET Core?

1 个答案:

答案 0 :(得分:2)

问题可能是NuGet图库中有一个名为MyClassLib的{​​{3}},版本为existing package,因此NuGet可能会将其拉低并引用它。

为了指示项目系统使用本地项目而不是已发布的包,请尝试执行

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