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

时间:2015-12-27 15:56:16

标签: c# visual-studio-2015 dnx project.json

我刚刚开始在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为空。

如何调试构建过程?

4 个答案:

答案 0 :(得分:23)

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

现在,将内容复制到输出文件夹的当前方法是使用project.json中的buildOptions section

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

在:

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

  // more stuff
}

后:

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

  // more stuff
}

答案 1 :(得分:10)

copyToOutput内使用buildOptions

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

或多个文件声明一个数组:

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

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

答案 2 :(得分:3)

  

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

的各个部分

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

您使用project.json内容部分

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

现在文档说默认情况下该文件应该作为内容默认复制,如果*(所有文件的通配符),但你可以强制它在内容<中明确说明你想要的文件/ strong> section。

答案 3 :(得分:2)

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

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

至于postbuild步骤,您可以按"producing outputs"进行操作。