12

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

我试过像这样添加一个“资源”变量,但它不起作用:

项目.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\\\""
    ] 
  }

复制资源.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

4 回答 4

23

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

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

copyToOutput您可以使用以下选项:

前:

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

  // more stuff
}

后:

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

  // more stuff
}
于 2016-08-03T15:08:48.003 回答
10

copyToOutput在里面使用buildOptions

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

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

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

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

于 2016-09-22T11:50:37.010 回答
3

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

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

您使用这样的内容部分project.json

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

现在文档说默认情况下应该将文件复制为内容默认值 if * (所有文件的通配符),但是您可以通过在内容部分中明确说明您想要的文件来强制它。

于 2015-12-28T00:10:40.497 回答
2

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

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

至于你的postbuild步骤,你可以通过"production outputs"来实现它。

于 2016-03-07T01:21:05.073 回答