、フォルダルールは、通常のWindowsアプリケーションよりも多少異なります。 ClickOnceコンテンツファイルが展開されるデータフォルダは、c:¥Users¥me¥Local Settings¥Apps¥2.0¥Dataにあります。そのフォルダの下にはいくつかのサブフォルダレベルがあり、かなり暗黙の識別子があります。
したがって、特定のClickOnceアプリケーションの実際のデータフォルダは、ApplicationDeploymentクラスを使用して最もよく取得されます。また、あなたが配布モードで実行しているかどうかを確認するためにIsNetworkDeployedプロパティをチェックする必要があります
if (ApplicationDeployment.IsNetworkDeployed)
{
var dataDirectory = ApplicationDeployment.CurrentDeployment.DataDirectory;
...
}
のDataDirectoryは、あなたのlog4netの設定ファイルにそのパスをハードコーディングすることができます方法はありませんClickOnceので決定されているので。私の提案は、アプリケーションの起動時にプログラマティックにファイルパスを変更することです。
foreach(var appender in LogManager.GetRepository().GetAppenders())
{
var fileAppender = appender as FileAppender;
if (fileAppender != null)
{
fileAppender.File =
fileAppender.File.Replace("${LOCALAPPDATA}", dataDirectory);
fileAppender.ActivateOptions();
}
}
これで問題が解決しない場合は、(例えばlog4net.config)設定ファイルを確認するには、あなたが確認する必要があり@Pakmanが言ったことと同様に、「データファイル」 – Pakman
、として展開されていませんlog4net.configファイルプロパティのビルドアクションは、log4net.configファイルをアプリケーションでデプロイして読み込むために、コンテンツ(Noneではなく)に設定されています。 http://stackoverflow.com/a/16433824/602585 – deadlydog