如何从另一个项目引用 ASP.NET 5 项目?

met*_*art 5 .net visual-studio-2015 dnx asp.net-core

我有一个从 VS2015 中的 ASP.NET 5 预览模板创建的 Web 应用程序项目。它在 dnx 1.0.0-beta7 上运行,但我使用完整的 .NET 框架而不是 .NET Core。

在同一解决方案中,我有一个 NUnit 类库项目,但是当尝试在此处添加 Web 项目作为引用时,Visual Studio 提示“无法添加对‘...’的引用。”

有解决方法吗?或者单元测试 ASP.NET vNext 应用程序的首选方法是什么?

Enr*_*lio 2

最简单的方法是确保 ASP.NET 5 Web 项目和测试项目共享一个公共父目录。例如:

Solution
|-- Web
|   |-- project.json
|-- Tests
|   |-- project.json
Run Code Online (Sandbox Code Playgroud)

这样 Roslyn 将能够解析不同子目录中的符号。

当然,您还需要在文件中添加从Tests项目到Web项目的依赖项Tests\project.json

{
    "webroot": "wwwroot",
    "version": "1.0.0-*",

    "dependencies": {
        "Web": "1.0.0-*"
    },

    "frameworks": {
        "dnx451": { },
        "dnxcore50": { }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果它们不能有共同的父目录,您始终可以在根目录global.json中添加一个文件,其中包含包含源代码的子目录列表。

Solution
|-- global.json
|-- Web
|   |-- project.json
|-- Tests
|   |-- project.json
Run Code Online (Sandbox Code Playgroud)

其中global.json包含:

{
    "sources": ["Web", "Tests"]
}
Run Code Online (Sandbox Code Playgroud)

在 Visual Studio 2015 中使用“添加引用”

如果当您使用Visual Studio 2015 中的“添加引用”对话框从ASP.NET 5 Web项目引用类库项目时,您会收到以下错误:

无法添加对<ProjectName>的引用。

这意味着您尝试引用的项目不是DNX项目,而是普通的类库项目。您需要确保该类库是ASP.NET 类库(包)项目才能引用它。