Cuál es el comportamiento esperado de los directorios padre-relativos en global.json?


(Ahora planteado como DNX issue 3206...)

Entorno DNX: 1.0.0-rc1, Windows 10 x64.

Imagine que tengo tres soluciones:

  • Aplicación1
  • Aplicación2
  • Frecuentes

Cada una de estas soluciones tiene múltiples proyectos; no tendría sentido tener todos los proyectos en una sola solución, aunque eso simplificaría este problema particular.

Varios proyectos en Aplicación1 y Aplicación2 depende de un proyecto en Común. Sus archivos project.json indican esa dependencia de una manera normal. Si bien eventualmente me gustaría publicar los artefactos de Common a un servidor NuGet (interno o externo), tiene sentido construir temporalmente todo desde el código fuente.

Puedo hacer eso editando global.json dentro de (digamos) Aplicación1 para tener:

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

Con eso en su lugar, puedo realizar un dnu restore desde el directorio Application1... pero no desde el directorio raíz. (El error es "Unable to locate Dependency 'Common' >= 0.0.0-* " (en inglés).) Puedo ejecutar dnu restore Application1 desde el directorio raíz, pero no solo dnu restore.

He intentado numerosas formas de hacer referencia al directorio src Común (incluyendo"./Common/src", "Common/src", "../repo-name / Common / src"), pero aún no he tenido ninguna alegría. En todos los casos, recibo el mensaje de error que se muestra arriba. He intentado usar dnu -v restore pero eso no parece dar ninguna información adicional sobre qué directorios estaban siendo sondeados para paquetes basados en código fuente.

So, ¿cómo debe el "../Common/src" ser resuelto en global.json? ¿Es este un enfoque razonable para el escenario de desarrollo que he descrito, y si es así, es solo una cuestión de presentar un error contra DNX?

 28
Author: Jon Skeet, 2015-11-25

1 answers

No funciona como se espera, cuando se inicia dnu restore intenta encontrar global.json en los directorios actual o padre, y lee la ruta del proyecto desde él. Así que en tu ejemplo no lee nada porque global.json está en el subdirectorio.

Una forma de resolver este problema es agregar global.json a la carpeta raíz con el siguiente contenido:

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

Preguntaré acerca de este escenario y si podría cambiar al pasar a dotnet cli

 8
Author: Pavel Krymets,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-25 18:58:57