ASP.NET Core项目在其引用的项目

时间:2016-12-09 06:15:03

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

作为初学者,我试图按照正确的方式创建一个类库项目或ASP.Net核心webApi。我的情况是:

1)我使用.net Core创建了一个类库项目(让我们称之为“AAA'”)。类库的框架应该是" netstandard1.6 "我知道。我定义了1个静态类及其方法。

2)然后我创建了另一个Asp.Net核心WebApi项目,让我们称之为“BBB' project.json文件中的默认框架是" netcoreapp1.0 "然后

然后在项目BBB中 - '参考文献'我添加项目AAA作为参考。没有错误发生。但是,如果我尝试使用prject AAA中定义的静态类/方法,Visual Studio告诉我无法找到静态类。 (而不是传统的.Net项目,它会自动弹出建议,如果我点击链接,VS会自动添加代码并为我排序。)

但是,如果我将鼠标移到红色错误部分的顶部,VS(或重新锐化)确实建议像"参考prject AAA ... NETStandard,Version = v1.6'并使用项目AAA.static类/方法...."。然而,即使我点击该建议,仍然没有任何变化。

为何如此,我该如何解决?

非常感谢!!

2 个答案:

答案 0 :(得分:0)

.NET标准库框架由.NET Core类库使用,但不是由.NET Core应用程序使用。

所以你的类库有一个像这样的project.json:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}

要将此类库引用到.NET Core应用程序中,您必须使用默认导入添加依赖性,它将起作用:

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "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",
    "ClassLibrary1": "1.0.0-*"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

使用这两个project.json文件,引用很棒,如果我在类库中添加一个静态类,如:

public static class Class2
{
    public static void Test()
    {

    }
}

我可以在Web应用程序控制器中调用此方法,例如:

[HttpGet]
public void TestStaticCall()
{
    ClassLibrary1.Class2.Test();
}

答案 1 :(得分:0)

我终于通过这篇文章解决了这个问题:https://github.com/aspnet/Tooling/issues/664。更新Resharper确实有帮助!非常感谢每一个人!!