【问题标题】:How to reference an ASP.NET 5 project from another project?如何从另一个项目中引用 ASP.NET 5 项目?
【发布时间】:2015-12-29 11:09:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net visual-studio-2015 asp.net-core dnx


    【解决方案1】:

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

    Solution
    |-- Web
    |   |-- project.json
    |-- Tests
    |   |-- project.json
    

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

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

    {
        "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 中使用“添加引用”

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

    无法添加对 的引用。

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

    【讨论】:

    • 感谢您的意见,恩里科!问题是,如何将其添加到现有的解决方案目录结构(顶级 .sln 和 WebProject/ 用于 Web 项目)?我找不到适合 Roslyn 的合适项目类型 - 并且手动将带有 project.json 的 WebProject.Test/* 添加到文件系统似乎不会产生所需的结果......
    • @metalheart 我更新了我的答案以解决您的评论。
    • 这对我有用-但是,我需要从测试项目中引用主项目,但感谢您指出原理。
    • 如何将类库切换到类库(包)项目?
    • 其实应该是“你还需要在Tests\project.json中添加一个从Tests项目到Web项目的依赖”
    【解决方案2】:

    我的经历略有不同,所以我想解释一下我发现的“解决方法”。

    特别是当我尝试添加“项目引用”(又名从一个项目到同一解决方案中的另一个项目)时,我收到“无法添加对'...'的引用”错误。

    我发现,如果您添加引用,而不是添加“项目引用”,而是浏览并添加 DLL(从被引用项目的 bin 文件夹中),它会正确地在“包装”目录。

    然后您可以删除对 DLL 的引用,然后返回并添加“项目引用”,它就可以工作了!

    我们有一组“共享”库,我们不想将它们复制/移动到与我们的主要应用程序文件夹相同的文件夹结构中,因此这对我们来说效果更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 2012-07-24
      • 2020-04-27
      • 1970-01-01
      • 2023-03-14
      • 2011-01-19
      • 1970-01-01
      相关资源
      最近更新 更多