global.json 中父相对目录的预期行为是什么?

What is the expected behaviour of parent-relative directories in global.json?

(现在提升为 DNX issue 3206...)

DNX 环境:1.0.0-rc1,Windows10 x64。

假设我有三个解决方案:

这些解决方案中的每一个都有多个项目;将所有项目放在一个解决方案中是没有意义的,即使这会简化这个 特殊的 问题。

Application1和Application2中的各个项目依赖于Common中的一个项目。他们的 project.json 文件以正常方式指示该依赖关系。虽然最终我想将工件从 Common 发布到 NuGet 服务器(内部或外部),但暂时只从源构建所有内容是有意义的。

我可以通过在(比如)Application1 中编辑 global.json 来做到这一点:

{
  "projects": [ "src", "test", "../Common/src" ], 
  "sdk": { "version": "1.0.0-rc1-final"  }
}

有了它,我可以从 Application1 目录...但不能从根目录执行 dnu restore 。 (错误是 "Unable to locate Dependency 'Common' >= 0.0.0-*"。)我可以从根目录 运行 dnu restore Application1,而不仅仅是 dnu restore.

我尝试了很多方法来引用 Common src 目录(包括“./Common/src”、"Common/src"、“../repo-name/Common/src”),但还没有任何快乐。在每种情况下,我都会收到上面显示的错误消息。我试过使用 dnu -v restore,但似乎没有提供任何关于正在为基于源的包探测哪些目录的额外信息。

那么,应该如何在global.json中解决"../Common/src"?对于我所描述的开发场景,这是一种合理的方法吗?如果是,是否只是针对 DNX 提交错误的问题?

它没有按您预期的方式工作,当您启动 dnu restore 时,它会尝试在当前或父目录中查找 global.json,并从中读取项目路径。因此,在您的示例中,它不会读取任何内容,因为 global.json 在子目录中。

解决此问题的一种方法是将 global.json 添加到根文件夹,内容如下:

{
   "projects": [ "Application/src", "Common/src" ]
}

我会四处询问这种情况,以及在移动到 dotnet cli 时它是否会改变