问题
I've just started working with DNX 1.0.0-rc1-update1 in VS2015. My first app is a 'Console Application (package)' project. Everything works, except NLog logging. I suspect it's because the NLog.config doesn't get copied to the output folder. How can I tell VS to copy this file to the output folder via project.json?
I've tried adding a 'resource' variable like this but it doesn't work:
project.json
...
"resource":"NLog.config",
...
EDIT 1: I'm using dnx451 so compatibility is not an issue.
EDIT 2: I added the following to 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
There's nothing in the output window in VS to indicate that the script was actually run. Furthermore, log.txt is empty.
How can I debug the build process?
回答1:
In the meantime, .NET Core RTM was published.
Now, the current way to get stuff copied to the output folder is using the buildOptions section in project.json
.
There's the copyToOutput option which you can use like this:
Before:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
// more stuff
}
After:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true,
"copyToOutput": { "includeFiles": [ "NLog.config" ] }
},
// more stuff
}
回答2:
Use copyToOutput
inside buildOptions
:
{
"buildOptions": {
"copyToOutput": "NLog.config"
}
}
or for multiple files declare an array:
{
"buildOptions": {
"copyToOutput": ["NLog.config", "testdata\\"]
}
}
To copy a directory remember to add the trailing \\
.
回答3:
By default all code files in a directory containing a project.json are included in the project. You can control this with the include/exclude sections of the project.json.
More info: http://docs.asp.net/en/latest/dnx/projects.html#including-excluding-files
You use the content section of project.json
like this
{
"content": [
"NLog.config"
]
}
Now the documentation says that the file should have been copied by default as the content default if * (wildcard for all files), but you can force it with the explicit stating of the file you want in the content section.
回答4:
I think it is broken in RC1. I was also looking how to get content files copied to the output folder, and found this issue that looks similar to what we are seeing.
As @Nkosi points out, the default for content
is **/*
(you can see via the docs link he provided, and also by the schema).
As for your postbuild
step, you can get it going by "producing outputs".
来源:https://stackoverflow.com/questions/34482103/copy-content-files-to-output-directory-of-dnx-console-app-via-project-json