c# - 如何使用 .NET CLI 指定对其他项目的依赖关系?

标签 c# .net asp.net-core .net-core

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

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

- Solution Folder
    - global.json
    - src
        - LibProject
        - ConsoleProject

现在假设 ConsoleProject 依赖于 LibProject。凭直觉,我认为这意味着在 ConsoleProject 中,project.json 必须包含一个 dependencies 部分,如下所示:

"dependencies": {
    "Microsoft.NETCore.App": {
        "type": "platform",
        "version": "1.0.0-*"
    },
    "LibProject": "1.0.0-*"
}

但是,如果我们这样做,当我们尝试恢复 ConsoleProject 的依赖项时,或者当我们尝试构建它时,我们将无法执行此操作。当我们尝试恢复时,我们收到消息

Unable to resolve 'LibProject (>= 1.0.0)' for '.NETCoreApp,Version=v1.0'.

我明白了原因。还原时,NuGet 会尝试在 NuGet.config 的指定源上将其作为包找到。但它不应该这样做,它应该使用同级文件夹中的那个。

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

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

最佳答案

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

例子:

全局.json

{
    "projects":[
        "ConsoleProject",
        "LibProject"
    ]
}

ConsoleProject/project.json

{
    "dependencies":{
        "LibProject":"",
    }
}

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

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

关于c# - 如何使用 .NET CLI 指定对其他项目的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36830016/

相关文章:

c# - 如何从另一个表单刷新一个表单?

.net - 找不到任何 Caliburn Micro with Prism 的 sample

c# - ASP.NET Core 2.0 预览版 1 : How to set up Cookie Authentication with custom login path

c# - 在 .NET Core 中以字符串形式返回 View

c# - 在 PostgreSQL 中使用特定模式的 Linq 和实体迁移

c# - 查找组件非可视化 C#

c# - 更改进程优先级不起作用

c# - 如何降低 WCF 命名管道的完整性

c# - 在 C# 中获取/设置更简单的方法?

c# - 告诉 Swashbuckle 只查找具有 ApiControllerAttribute 的 Controller