由于代码库的组织问题,打破一个大型解决方案是多个项目的常见做法,这在 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/