如何使用.NET CLI指定其他项目的依赖项?

use*_*696 5 .net c# .net-core asp.net-core

对于组织代码库的问题,打破大型解决方案通常是多个项目,这很容易在Visual Studio内部的早期版本的.NET Framework中完成.

如何使用.NET CLI完成相同的操作?假设我们有以下简化方案,例如:

- Solution Folder
    - global.json
    - src
        - LibProject
        - ConsoleProject
Run Code Online (Sandbox Code Playgroud)

现在假设ConsoleProject取决于LibProject.直觉上我相信,这意味着,在ConsoleProject该project.json会必须包含一个dependencies这样的部分:

"dependencies": {
    "Microsoft.NETCore.App": {
        "type": "platform",
        "version": "1.0.0-*"
    },
    "LibProject": "1.0.0-*"
}
Run Code Online (Sandbox Code Playgroud)

但是如果我们这样做,当我们尝试恢复依赖关系时,ConsoleProject或者当我们尝试构建它时,我们无法做到.当我们尝试恢复时,我们得到了消息

无法为'.NETCoreApp,Version = v1.0'解析'LibProject(> = 1.0.0)'.

我理解原因.在恢复时,NuGet正在尝试将其作为包上指定的Feed NuGet.config.但它不应该这样做,它应该使用兄弟文件夹中的那个.

在以前版本的.NET Core中,我们将通过VS添加引用,然后,如果我们尝试构建它ConsoleProject,VS将首先构建LibProject并使用相应的DLL.

怎么在这里做同样的事情?我们如何在同一解决方案中引用另一个项目?考虑到这种依赖性,我们如何使用.NET CLI恢复/构建/运行?

小智 4

定义解决方案在 global.json 文件上的项目后,您可以在 project.json 上按名称引用它们,而无需指定特定版本。

例子:

全局.json

{
    "projects":[
        "ConsoleProject",
        "LibProject"
    ]
}
Run Code Online (Sandbox Code Playgroud)

ConsoleProject/project.json

{
    "dependencies":{
        "LibProject":"",
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在这里找到更好的示例:http://forums.dotnetfoundation.org/t/referencing-another-project-in-net-core/1298/2

或者在此存储库中:https://github.com/cartermp/dnx-apps/tree/master/multiple-projects