c# - Copie los archivos de contenido al directorio de salida de la aplicación DNX Console a través de project.json
visual-studio-2015 (4)
Por defecto, todos los archivos de código en un directorio que contiene un project.json se incluyen en el proyecto. Puede controlar esto con las secciones de incluir / excluir del proyecto.json.
Más información: http://docs.asp.net/en/latest/dnx/projects.html#including-excluding-files
Usas la sección de contenido de project.json
como esta
{
"content": [
"NLog.config"
]
}
Ahora la documentación dice que el archivo debería haberse copiado de forma predeterminada como el contenido predeterminado si * (comodín para todos los archivos), pero puede forzarlo con la indicación explícita del archivo que desea en la sección de contenido .
Acabo de empezar a trabajar con DNX 1.0.0-rc1-update1 en VS2015. Mi primera aplicación es un proyecto de ''Aplicación de consola (paquete)''. Todo funciona, excepto el registro NLog. Sospecho que es porque NLog.config no se copia a la carpeta de salida. ¿Cómo puedo decirle a VS que copie este archivo en la carpeta de salida a través de project.json?
Intenté agregar una variable ''resource'' como esta, pero no funciona:
project.json
...
"resource":"NLog.config",
...
EDIT 1: Estoy usando dnx451 así que la compatibilidad no es un problema.
EDIT 2: Agregué lo siguiente a project.json
"scripts": {
"postbuild": [
"%project:Directory%/../scripts/copy_resources.bat ///"%project:Directory%///" ///"%project:Directory%/../artifacts/bin/%project:Name%/%project:Version%/dnx451///""
]
}
copy_resources.bat
echo "Running script" >> C:/logs/log.txt
echo %1 >> C:/logs/log.txt
echo %2 >> C:/logs/log.txt
xcopy %1/NLog.config %2 /U /Y
No hay nada en la ventana de salida en VS para indicar que el script realmente se ejecutó. Además, log.txt está vacío.
¿Cómo puedo depurar el proceso de compilación?
Mientras tanto, se publicó .NET Core RTM.
Ahora, la forma actual de obtener cosas copiadas en la carpeta de salida es usando la sección buildOptions
en project.json
.
Existe la opción copyToOutput
que puede usar así:
Antes de:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
// more stuff
}
Después:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true,
"copyToOutput": { "includeFiles": [ "NLog.config" ] }
},
// more stuff
}
Use copyToOutput
dentro de buildOptions
:
{
"buildOptions": {
"copyToOutput": "NLog.config"
}
}
o para múltiples archivos declarar una matriz:
{
"buildOptions": {
"copyToOutput": ["NLog.config", "testdata//"]
}
}
Para copiar un directorio recuerde agregar el //
final.
Creo que está roto en RC1. También busqué cómo copiar los archivos de contenido en la carpeta de salida, y encontré este problema que se parece a lo que estamos viendo.
Como señala @Nkosi, el valor predeterminado para el content
es **/*
(se puede ver a través del enlace de documentos que proporcionó, y también por el esquema ).
En cuanto a su paso postbuild
la postbuild
, puede ponerlo en funcionamiento mediante la "producción de resultados" .