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

时间:2015-11-25 14:37:28

标签: dnx dnu

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

DNX环境:1.0.0-rc1,Windows 10 x64。

想象一下,我有三个解决方案:

  • 应用1
  • 应用2
  • 通用

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

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 ,但不能从根目录执行。 (错误是"无法找到依赖关系' Common'> = 0.0.0 - *"。)我可以从根目录运行dnu restore Application1,但不仅仅是dnu restore

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

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

1 个答案:

答案 0 :(得分:8)

当你开始dnu restore它试图在当前或父目录中找到global.json并从中读取项目路径时,它没有按照你期望的方式工作。因此,在您的示例中,它不会读取任何内容,因为global.json位于子目录中。

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

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

我会询问这个场景,以及转移到dotnet cli

时是否会发生变化