В ClickOnce правила папок несколько отличаются от обычных приложений Windows. Папка с данными, в которой развернуты файлы контента ClickOnce, находится в каталоге c: \ Users \ me \ Local Settings \ Apps \ 2.0 \ Data. Под этой папкой есть пара уровней подпапок с довольно загадочными идентификаторами.
Таким образом, фактическую папку данных для данного приложения ClickOnce лучше всего извлекать с использованием класса ApplicationDeployment . Вам также следует проверить свойство IsNetworkDeployed, чтобы убедиться, что вы работаете в развернутом режиме:
if (ApplicationDeployment.IsNetworkDeployed)
{
var dataDirectory = ApplicationDeployment.CurrentDeployment.DataDirectory;
...
}
Поскольку DataDirectory определяется ClickOnce, вы не можете жестко закодировать этот путь в конфигурацию log4net. Мое предложение было бы изменить пути к файлам программно при запуске приложения.
foreach(var appender in LogManager.GetRepository().GetAppenders())
{
var fileAppender = appender as FileAppender;
if (fileAppender != null)
{
fileAppender.File =
fileAppender.File.Replace("${LOCALAPPDATA}", dataDirectory);
fileAppender.ActivateOptions();
}
}