如何从另一个项目中引用一个 ASP.NET 5 项目?
How to reference an ASP.NET 5 project from another project?
我有一个从 ASP.NET VS2015 中的 5 个预览模板创建的 Web 应用程序项目。它在 dnx 1.0.0-beta7 上是 运行,但我使用的是完整的 .NET 框架而不是 .NET Core。
在同一个解决方案中,我有一个 NUnit class 库项目,但是当尝试在此处添加 Web 项目作为参考时,Visual Studio 说 "A reference to '...' could not be added."
有解决办法吗?或者单元测试 ASP.NET vNext 应用程序的首选方式是什么?
最简单的方法是确保您的 ASP.NET 5 web 项目和测试项目共享一个 公共父目录 。例如:
Solution
|-- Web
| |-- project.json
|-- Tests
| |-- project.json
这样 Roslyn 将能够跨不同的子目录解析符号。
当然,您还需要从 Tests 项目添加一个 dependency 到 Web Tests\project.json
文件中的项目:
{
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies": {
"Web": "1.0.0-*"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
}
如果它们没有共同的父目录,您总是可以在 根目录 中添加一个 global.json
文件,其中包含包含源代码的子目录列表。
Solution
|-- global.json
|-- Web
| |-- project.json
|-- Tests
| |-- project.json
其中 global.json
包含:
{
"sources": ["Web", "Tests"]
}
在 Visual Studio 2015
中使用 "Add Reference"
如果当您使用 添加引用 [=49= 从 ASP.NET 5 Web 项目引用 class 库项目时] 在 Visual Studio 2015 中出现此错误的对话框:
A reference to <ProjectName> could not be added.
这意味着您要引用的项目不是 DNX 项目,而是一个普通的 Class 库 项目。您需要确保 class 库是 ASP.NET Class 库(包) 项目才能引用它。
我的经历略有不同,所以我想解释一下我发现的 'work-around'。
特别是当我尝试添加 "Project Reference"(也就是在同一解决方案中从一个项目添加到另一个项目)时,出现 "A reference to '...' could not be added" 错误。
我发现如果您添加引用,而不是添加 "project reference" 而是浏览并添加 DLL(从被引用项目的 bin 文件夹中),它会正确创建必要的文件夹在 "wrap" 目录中。
然后您可以删除对 DLL 的引用,然后返回并添加 "project reference" 就可以了!
我们有一组 "shared" 个库,我们不想 copy/move 到我们的主要应用程序文件夹的相同文件夹结构,所以这对我们更有效。
我有一个从 ASP.NET VS2015 中的 5 个预览模板创建的 Web 应用程序项目。它在 dnx 1.0.0-beta7 上是 运行,但我使用的是完整的 .NET 框架而不是 .NET Core。
在同一个解决方案中,我有一个 NUnit class 库项目,但是当尝试在此处添加 Web 项目作为参考时,Visual Studio 说 "A reference to '...' could not be added."
有解决办法吗?或者单元测试 ASP.NET vNext 应用程序的首选方式是什么?
最简单的方法是确保您的 ASP.NET 5 web 项目和测试项目共享一个 公共父目录 。例如:
Solution
|-- Web
| |-- project.json
|-- Tests
| |-- project.json
这样 Roslyn 将能够跨不同的子目录解析符号。
当然,您还需要从 Tests 项目添加一个 dependency 到 Web Tests\project.json
文件中的项目:
{
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies": {
"Web": "1.0.0-*"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
}
如果它们没有共同的父目录,您总是可以在 根目录 中添加一个 global.json
文件,其中包含包含源代码的子目录列表。
Solution
|-- global.json
|-- Web
| |-- project.json
|-- Tests
| |-- project.json
其中 global.json
包含:
{
"sources": ["Web", "Tests"]
}
在 Visual Studio 2015
中使用 "Add Reference"如果当您使用 添加引用 [=49= 从 ASP.NET 5 Web 项目引用 class 库项目时] 在 Visual Studio 2015 中出现此错误的对话框:
A reference to <ProjectName> could not be added.
这意味着您要引用的项目不是 DNX 项目,而是一个普通的 Class 库 项目。您需要确保 class 库是 ASP.NET Class 库(包) 项目才能引用它。
我的经历略有不同,所以我想解释一下我发现的 'work-around'。
特别是当我尝试添加 "Project Reference"(也就是在同一解决方案中从一个项目添加到另一个项目)时,出现 "A reference to '...' could not be added" 错误。
我发现如果您添加引用,而不是添加 "project reference" 而是浏览并添加 DLL(从被引用项目的 bin 文件夹中),它会正确创建必要的文件夹在 "wrap" 目录中。
然后您可以删除对 DLL 的引用,然后返回并添加 "project reference" 就可以了!
我们有一组 "shared" 个库,我们不想 copy/move 到我们的主要应用程序文件夹的相同文件夹结构,所以这对我们更有效。