Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

C# - CodeDomProvider 사용 시 Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path '...\f2_6uod0.tmp'.

CodeDomProvider를 사용한 응용 프로그램이 고객사의 특정 서버에서만 다음과 같은 식의 컴파일 오류가 발생하고,

Line number 0, Error Number: CS2001, 'Source file 'C:\Windows\TEMP\kilsykm3.0.cs' could not be found
Line number 0, Error Number: CS2001, 'Source file 'C:\Windows\TEMP\kilsykm3.1.cs' could not be found
Line number 0, Error Number: CS2001, 'Source file 'C:\Windows\TEMP\kilsykm3.2.cs' could not be found
Line number 0, Error Number: CS2008, 'No source files specified

구체적인 예외 메시지는 DirectoryNotFoundException으로 나옵니다.

Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\temp\ConsoleApp1\bin\Debug\extension\f2_6uod0.tmp'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
   at System.CodeDom.Compiler.TempFileCollection.EnsureTempNameCreated()
   at System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension, Boolean keepFile)
   at Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources)
   at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources)
   at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromSource(CompilerParameters options, String[] sources)
   at ConsoleApp1.Program.Main(String[] args) in C:\temp\ConsoleApp1\Program.cs:line 57

고객사 서버를 구체적으로 검사할 만한 상황은 아니었지만, 그동안의 경험으로 ^^ 봤을 때 아마도 해당 서버에 설치해 둔 보안 프로그램이 "C:\Windows" 하위 폴더에 생성된 임시 파일들을 강제 삭제하기 때문에 CompileAssemblyFromSourceBatch 메서드 수행 시점에는 해당 파일들이 없어 저런 오류가 발생하는 것으로 보입니다.

그래서 임시 파일의 생성 경로를 "%TEMP%"가 아닌 명시적인 로컬 폴더를 지정하는 것으로 바꿨고, 이후 오류 없이 응용 프로그램이 잘 동작했습니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 3/17/2020]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 166  167  168  169  170  171  172  173  174  [175]  176  177  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
666정성태2/12/200929711웹: 8. IE 8: 프로세스와 윈도우의 관계 - LCIE [1]파일 다운로드1
665정성태2/7/200926100웹: 7. Internet Explorer 8 - XHR, XDR, XST, XSRF [1]
664정성태2/5/200922083Windows: 42. Concurrency Runtime
663정성태2/5/200926672.NET Framework: 123. WPF - Arial Narrow 폰트 문제
662정성태2/3/200922261VS.NET IDE: 59. HyperAddin 도구 사용 설명 [1]
661정성태2/3/200925955오류 유형: 68. msxml6r.dll 설치 오류
660정성태2/3/200924673Windows: 41. UAC 보안 취약 [2]
659정성태2/2/200935962오류 유형: 67. ClickOnce 응용 프로그램이 실행되지 않을 때.
658정성태2/1/200928116Team Foundation Server: 30. 소스 서버 보안
657정성태2/1/200931108Windows: 40. Q1 Ultra + Windows 7 베타
656정성태2/1/200932349디버깅 기술: 24. .NET JIT 최적화 코드 생성 제어
655정성태1/31/200928850Windows: 39. IE8 표준 모드 [4]
653정성태1/29/200923664.NET Framework: 122. XML Serializer를 이용한 값 복사: 성능은 어떨까!파일 다운로드1
652정성태1/22/200924308.NET Framework: 121. WPF - PrintTicket provider failed to bind to printer.
651정성태1/20/200921928.NET Framework: 120. 타입이 다른 배열끼리의 변환
650정성태1/19/200933688COM 개체 관련: 21. C/C++ 프로젝트에 /clr 옵션 적용으로 인한 COM 개체 사용 오류
649정성태1/18/200931284Windows: 38. Q1U UMPC에 Windows 7 베타 설치하기
648정성태1/18/200929877Windows: 37. Windows PE를 USB 메모리에 적용
647정성태1/18/200940123Windows: 36. Windows PE ISO 이미지 만들기 [1]
646정성태1/18/200933087디버깅 기술: 23. COMPLUS_ZapDisable - JIT 최적화 코드 생성 제어 [1]
645정성태1/11/200931715Windows: 35. 서명되지 않은 드라이버 로딩 방법
644정성태1/11/200922786Windows: 34. VPC 설치 후기 [2]
643정성태1/10/200928138Windows: 33. Windows 7 베타와 VMA 충돌 [1]
642정성태1/8/200926839개발 환경 구성: 34. Sysinternals의 모든 툴을 한번에 업데이트 하는 방법 [1]
641정성태1/7/200923880기타: 27. D820 - A09 바이오스 업데이트 프로그램 패치 [2]
640정성태1/4/200925624Team Foundation Server: 29. ClickOnce 응용 프로그램 배포를 Team Build에 추가.
... 166  167  168  169  170  171  172  173  174  [175]  176  177  178  179  180  ...