, 폴더 규칙은 일반 윈도우 애플 리케이션을위한보다 다소 다릅니다. ClickOnce 콘텐츠 파일이 배포되는 데이터 폴더는 c : \ Users \ me \ Local Settings \ Apps \ 2.0 \ Data에 있습니다. 그 폴더 아래에 다소 비밀스러운 식별자가있는 두 개의 하위 폴더 수준이 있습니다.
따라서 주어진 ClickOnce 앱의 실제 데이터 폴더는 ApplicationDeployment 클래스를 사용하여 가장 잘 검색됩니다. 당신은 또한 당신이 배치 모드에서 실행하고 있는지 확인하기 위해 IsNetworkDeployed 속성을 확인해야 다음 DataDirectory를 이후
if (ApplicationDeployment.IsNetworkDeployed)
{
var dataDirectory = ApplicationDeployment.CurrentDeployment.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 파일을 배포하고 응용 프로그램에서 읽을 수 있도록 Content (None이 아님)로 설정됩니다. http://stackoverflow.com/a/16433824/602585 – deadlydog