dotnet core でbuildした時に、設定ファイルがビルド先にコピーされずに困っています。
どうすれば設定ファイルがコピーされるのでしょうか?
コピーしたい設定ファイルはNLogの設定ファイルで、名前は「NLog.config」です。
dotnet core 3.1.100でサンプルを作成しています。
バージョンを確認すると以下のように表示されますので、バージョンは3.1.100で間違いないと思われます。
console
1>dotnet --version 23.1.100
dotnet new console コマンドでコンソールアプリケーションを作成してあります。
NLogのパッケージを読み込んでおります。
treeコマンドでファイル構成を確認した所、以下のようになりました。
console
1nlog_console_01>tree /F 2 3フォルダー パスの一覧: ボリューム OS 4ボリューム シリアル番号は XXXX-XXXX です 5C:. 6│ NLog.config 7│ nlog_console_01.csproj 8│ Program.cs 9│ 10├─bin 11│ └─Debug 12│ └─netcoreapp3.1 13│ NLog.config 14│ NLog.dll 15│ nlog_console_01.deps.json 16│ nlog_console_01.dll 17│ nlog_console_01.exe 18│ nlog_console_01.pdb 19│ nlog_console_01.runtimeconfig.dev.json 20│ nlog_console_01.runtimeconfig.json 21│ 22└─obj 23 │ nlog_console_01.csproj.nuget.cache 24 │ nlog_console_01.csproj.nuget.dgspec.json 25 │ nlog_console_01.csproj.nuget.g.props 26 │ nlog_console_01.csproj.nuget.g.targets 27 │ project.assets.json 28 │ 29 └─Debug 30 └─netcoreapp3.1 31 nlog_console_01.AssemblyInfo.cs 32 nlog_console_01.AssemblyInfoInputs.cache 33 nlog_console_01.assets.cache 34 nlog_console_01.csproj.CopyComplete 35 nlog_console_01.csproj.FileListAbsolute.txt 36 nlog_console_01.csprojAssemblyReference.cache 37 nlog_console_01.dll 38 nlog_console_01.exe 39 nlog_console_01.pdb
csprojの中身は以下の通りです。
XML
1<Project Sdk="Microsoft.NET.Sdk"> 2 3 <PropertyGroup> 4 <OutputType>Exe</OutputType> 5 <TargetFramework>netcoreapp3.1</TargetFramework> 6 </PropertyGroup> 7 8 <ItemGroup> 9 <PackageReference Include="nlog" Version="4.6.8" /> 10 <PackageReference Include="NLog.Config" Version="4.6.8" /> 11 </ItemGroup> 12 13</Project>
問題となっているのは、フォルダ直下にある「NLog.config」が、\bin\Debug\netcoreapp3.1\NLog.config にコピーされていない事です。
ファイルは存在しますが、中身が異なっています。
フォルダ直下のNLog.configは以下の通りです。
xml
1<?xml version="1.0" encoding="utf-8" ?> 2<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4 5 <targets> 6 <target name="logfile" xsi:type="File" fileName="file.txt" /> 7 <target name="logconsole" xsi:type="Console" /> 8 </targets> 9 10 <rules> 11 <logger name="*" minlevel="Info" writeTo="logconsole" /> 12 <logger name="*" minlevel="Debug" writeTo="logfile" /> 13 </rules> 14</nlog>
比べて、\bin\Debug\netcoreapp3.1\NLog.config は以下の通りです。
xml
1<?xml version="1.0" encoding="utf-8" ?> 2<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" 5 autoReload="true" 6 throwExceptions="false" 7 internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> 8 9 <!-- optional, add some variables 10 https://github.com/nlog/NLog/wiki/Configuration-file#variables 11 --> 12 <variable name="myvar" value="myvalue"/> 13 14 <!-- 15 See https://github.com/nlog/nlog/wiki/Configuration-file 16 for information on customizing logging rules and outputs. 17 --> 18 <targets> 19 20 <!-- 21 add your targets here 22 See https://github.com/nlog/NLog/wiki/Targets for possible targets. 23 See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers. 24 --> 25 26 <!-- 27 Write events to a file with the date in the filename. 28 <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" 29 layout="${longdate} ${uppercase:${level}} ${message}" /> 30 --> 31 </targets> 32 33 <rules> 34 <!-- add your logging rules here --> 35 36 <!-- 37 Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f" 38 <logger name="*" minlevel="Debug" writeTo="f" /> 39 --> 40 </rules> 41</nlog>
恐らく、\bin\Debug\netcoreapp3.1\NLog.config は、NLogパッケージによって自動的に作成されたものと思われます。
これを自作のNLog.configに書き換えたいのですが、今のところは手動でコピーしています。
どうにかしてビルド時に自動的にコピーしてくれるようにはできないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。