Vraag Kopieer inhoudsbestanden naar de uitvoermap van de DNX Console-app via project.json


Ik ben net begonnen met werken met DNX 1.0.0-rc1-update1 in VS2015. Mijn eerste app is een 'Console Application (package)' project. Alles werkt, behalve NLog-logging. Ik vermoed dat dit komt omdat de NLog.config niet naar de outputmap wordt gekopieerd. Hoe kan ik VS vertellen om dit bestand via project.json naar de outputmap te kopiëren?

Ik heb geprobeerd om een ​​variabele 'resource' toe te voegen, maar dit werkt niet:

project.json

...
"resource":"NLog.config",
...

EDIT 1: Ik gebruik dnx451, dus compatibiliteit is geen probleem.

EDIT 2: Ik heb het volgende toegevoegd aan 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

Er staat niets in het uitvoervenster in VS om aan te geven dat het script daadwerkelijk is uitgevoerd. Bovendien is log.txt leeg.

Hoe kan ik het build-proces debuggen?


12
2017-12-27 15:56


oorsprong


antwoorden:


In de tussentijd is .NET Core RTM gepubliceerd.

De huidige manier om spullen naar de uitvoermap te kopiëren, gebruikt nu de buildOptions sectie in project.json.

Daar is de copyToOutput optie die u als volgt kunt gebruiken:

Voor:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  // more stuff
}

Na:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true,
    "copyToOutput": { "includeFiles": [ "NLog.config" ] }
  },

  // more stuff
}

23
2017-08-03 15:08



Gebruik copyToOutput binnen buildOptions:

{
  "buildOptions": {
    "copyToOutput":  "NLog.config" 
  }
}

of voor meerdere bestanden een array declareren:

{
  "buildOptions": {
    "copyToOutput":  ["NLog.config", "testdata\\"]
  }
}

Als u een map wilt kopiëren, vergeet dan niet om de volgboom toe te voegen \\.


10
2017-09-22 11:50



Standaard zijn alle codebestanden in een map die een project.json bevat   opgenomen in het project. U kunt dit regelen met de include / exclude   delen van het project.json.

Meer informatie: http://docs.asp.net/en/latest/dnx/projects.html#including-excluding-files

U gebruikt de inhoud gedeelte van project.json soortgelijk

{
  "content": [
    "NLog.config"
  ]
}

Nu zegt de documentatie dat het bestand standaard gekopieerd zou moeten zijn als de standaardinstelling als * (wildcard voor alle bestanden), maar je kunt het dwingen met de expliciete vermelding van het bestand dat je wilt in de inhoud sectie.


3
2017-12-28 00:10



Ik denk dat het gebroken is in RC1. Ik was ook aan het kijken hoe inhoudsbestanden naar de uitvoermap werden gekopieerd en gevonden deze kwestie dat lijkt op wat we zien.

Zoals @Nkosi opmerkt, de standaard voor content is **/* (u kunt zien via de docs-link die hij heeft verstrekt, en ook door de schema).

Wat betreft jouw postbuild stap, je kunt het op gang krijgen "output produceren".


2
2018-03-07 01:21