私はラズベリーパイのC#を使いこなし始めました。うまくいくようです。私は、Monodevelopを使ってArch LinuxマシンにC#アプリケーションを開発しています。bin/Debug /ディレクトリのすべてを自分のRaspberry Piにscpしてから、 "mono my.exe"を実行しています。これは私が試したいくつかの簡単なアプリケーションで動作しましたが、NLogに問題があります。実行ファイルは、私の開発マシン上で正常に動作が、私はラズベリーパイの上に、この例外を取得:C#Mono NLogファイルまたはアセンブリをロードできませんでした。ラズベリーPIにデプロイされたとき
mono NLogTest.exe
Unhandled Exception:
System.TypeInitializationException: The type initializer for 'NLogTest.MainClass' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly or one of its dependencies.
at NLog.LogFactory.get_Configuration() [0x000aa] in <eb9f75c9ffa040549f1fea1320a5bf6c>:0
at NLog.LogFactory.GetLogger (NLog.LogFactory+LoggerCacheKey cacheKey) [0x0012c] in <eb9f75c9ffa040549f1fea1320a5bf6c>:0
at NLog.LogFactory.GetLogger (System.String name) [0x00011] in <eb9f75c9ffa040549f1fea1320a5bf6c>:0
at NLog.LogManager.GetCurrentClassLogger() [0x0000a] in <eb9f75c9ffa040549f1fea1320a5bf6c>:0
at NLogTest.MainClass..cctor() [0x00000] in <689b8644ac61434f9d79427c3bf696a7>:0
--- End of inner exception stack trace ---
NLogは、設定ファイルを見つけることができないかのように思えるが、それは同じディレクトリにあります。
私が使用しています簡単な例は次のとおりです。
using System;
using NLog;
namespace NLogTest
{
class MainClass
{
private static Logger logger = LogManager.GetCurrentClassLogger();
public static void Main(string[] args)
{
Console.WriteLine("Testing NLog");
logger.Trace("A Trace!!");
logger.Debug("Sample debug message");
logger.Info("Sample informational message");
logger.Warn("Sample warning message");
logger.Error("Sample error message");
logger.Fatal("Sample fatal error message");
Console.Write("DONE LOGGING!");
}
}
}
と私のNLog.configファイルは非常に単純です:
<?xml version="1.0" encoding="UTF-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
throwExceptions="false">
<targets>
<target xsi:type="File"
name="logFile"
fileName="The.log"
/>
</targets>
<rules>
<logger name="*" writeTo="logFile" minlevel="Info" />
</rules>
</nlog>
私のラズベリーパイexeファイルが含まれている、NLog.config上のディレクトリファイル、およびNLog.dll。
aptからmono-runtimeパッケージをRaspberry piにインストールしました。私の開発マシンでは、プロジェクトのMonodevelopビルドオプションが "Mono/.NET 4.5"をターゲットに設定されています。モノラルランタイムがアーキテクチャの違いを処理すると思っていたため、x86マシンで開発してARM-Aマシンにデプロイすることは重要ではないと私は考えました。
ここにお手伝いいただきありがとうございます。
NLogのどのバージョンを使用していますか?設定ファイルが見つからないため例外がスローされるというのは不思議です。 –
Mono用に手動でNLog.dllをコンパイルしましたか?そうでない場合は、Net35用のNLog.dllを使用するようにしてください。 –
@RolfKristensen NuGet経由でNLogをダウンロードしたところ、4.4.12です。それはnet45のようだ。 Mono用にコンパイルされているかどうかわかりませんが、おそらくそれを試してみます。ヒントをありがとう! – Jesse