VS2015でDNX1.0.0-rc1-update1の使用を開始しました。私の最初のアプリは「コンソールアプリケーション(パッケージ)」プロジェクトです。 NLogロギングを除いて、すべてが機能します。 NLog.configが出力フォルダーにコピーされないためだと思います。 project.jsonを介してこのファイルを出力フォルダーにコピーするようにVSに指示するにはどうすればよいですか?
このような「resource」変数を追加しようとしましたが、機能しません。
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.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
}
copyToOutput
内で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#include-except-files
project.json
のcontentセクションを次のように使用します
{
"content": [
"NLog.config"
]
}
ドキュメントには、*(すべてのファイルのワイルドカード)の場合、ファイルはデフォルトでコンテンツのデフォルトとしてコピーされるべきであると記載されていますが、に必要なファイルを明示的に指定することで強制できます)contentセクション。