通过project.json将内容文件复制到DNX Console应用程序的输出目录

我刚刚开始在VS2015中使用DNX 1.0.0-rc1-update1。 我的第一个应用程序是“控制台应用程序(包)”项目。 一切正常,除了NLog日志记录。 我怀疑是因为NLog.config没有被复制到输出文件夹。 如何通过project.json告诉VS将此文件复制到输出文件夹?

我已经尝试添加这样的’资源’变量,但它不起作用:

project.json

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

编辑1:我正在使用dnx451,因此兼容性不是问题。

编辑2:我将以下内容添加到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 

VS的输出窗口中没有任何内容表明脚本实际运行。 此外,log.txt为空。

如何调试构建过程?

与此同时,.NET Core RTM发布了。

现在,将东西复制到输出文件夹的当前方法是使用project.jsonbuildOptions部分 。

你可以使用copyToOutput选项,如下所示:

之前:

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

后:

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

buildOptions使用buildOptions

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

或者对于多个文件声明一个数组:

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

要复制目录,请记住添加尾随\\

默认情况下,包含project.json的目录中的所有代码文件都包含在项目中。 您可以使用project.json的include / exclude部分来控制它。

更多信息: http : //docs.asp.net/en/latest/dnx/projects.html#including-excluding-files

你可以像这样使用project.jsoncontent部分

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

现在文档说明文件应该默认复制为内容默认值,如果*(所有文件的通配符),但您可以通过在内容部分中明确说明所需文件来强制它。

我认为它在RC1中被打破了。 我还在寻找如何将内容文件复制到输出文件夹,并发现这个问题与我们看到的类似。

正如@Nkosi指出的那样, content的默认值是**/* (您可以通过他提供的文档链接以及模式来查看)。

至于你的postbuild步骤,你可以通过“产生输出”来实现它 。