7

我正在使用 VS 更新 3 (14.0.25425.01)。这是我所做的:

  1. 创建 ASP.Net Core Web 应用程序 (.Net Core)
  2. 创建类库 .Net 4.6.2
  3. 在 project.json 中添加net462到框架netcoreapp1.0、、导入
  4. 右键单击 ASP.Net Core 应用程序,单击添加引用,选择项目,选择您在步骤 2 中创建的类库。

我在恢复时没有收到任何错误,并且引用已添加到 ASP.Net Core 应用程序中。但是,我无法访问它。我无法添加 using 导入声明或访问对象。我经历了很多事情,但似乎没有任何效果,而且帖子的版本非常分散。

在此处输入图像描述

这是 ASP.Net Core 应用程序中的 Program.cs。 在此处输入图像描述

在此处输入图像描述

更新 我按照 Nate 的建议做了。我以为我已经尝试过了……但果然我现在可以访问我的 4.6.2 库了。但是,我现在遇到编译错误。

在此处输入图像描述

4

2 回答 2

4

这在 Visual Studio 2015 Update 3 中确实有效,但您的project.json做法并不完全正确。

而不是添加net462到该imports部分,它应该在该frameworks部分中:

"frameworks": {
  "net461": { },
  "netcoreapp1.0": {
    "dependencies": {
      "Microsoft.NETCore.App": {
        "type": "platform",
        "version": "1.0.0"
      }
    }
  }
}

请注意,Microsoft.NETCore.App依赖项也需要移动到该netcoreapp1.0部分中。这是因为只有在编译为 .NET Core 应用程序时才需要这种依赖关系。

对您的 .NET 4.6.2 库的引用只是您dependencies部分的一部分:

"dependencies": {
  (...)
  "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
  "MyLibrary": {
    "target": "project"
  }
}

通过以这种方式构建它,我能够毫无问题地引用和使用我的 .NET 4.6.2 库中的类。


project.json作为参考,这是我使用的整个工作:

{
  "dependencies": {
    "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.Configuration.CommandLine": "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",
    "MyLibrary": {
      "target": "project"
    }
  },
  "frameworks": {
    "net461": { },
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        }
      }
    }
  },
  "version": "1.0.0-*"
}
于 2016-08-09T02:06:37.787 回答
1

@NateBarbettini 回答完成了我最初的问题。但是我无法使用我的 .Net 4.6.1 项目运行 ASP.Net Core Web 应用程序版本 1,因为它无法为我的 .Net 4.6.1 项目找到 .NetCore.App v1 程序集。因此,我使用以下 project.json 在我的 .Net 4.6.1 项目中添加了一个 project.json。

{
  "version": "1.0.0-*",

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

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

接下来,在 ASP.Net Core Web 应用程序中,通过在 .NetCore.App 下添加依赖项来修改 project.json。这样,它将同时选择 4.6.1 和 .NetCore v1 这两个版本。

...
"frameworks": {
"net461": {
  "dependencies": {
    "ClassLibrary1": {
      "target": "project"
    }
  }
},
"netcoreapp1.0": {
  "imports": [
    "dotnet5.6",
    "portable-net45+win8",
    "net461"
  ],
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "ClassLibrary1": {
      "target": "project"
    }
  }
}
}

到目前为止一切顺利,我可以在 .Net 4.6.1 中开发,它可以在 .NetCore.App v1 下运行。但是,我认为当我的 .Net 4.6.1 项目中有其他依赖项时会出现问题。

于 2016-08-10T04:33:12.373 回答