하나의 exe 파일 만있는 프로그램을 만들려고합니다. 그것이 요구 사항입니다.FileOptions.DeleteOnClose를 사용하여 파일을 만들고, 쓰고, 삭제 된 것을 확인하십시오.
하지만 사용자가 무엇을하는지 알 수 있도록 해당 프로그램에 대한 도움말을 구현해야합니다. chm 파일을 만들고 HelpProvider를 사용하기로 결정했습니다. 처음에는 chm 파일을 임베드하여 HelpProvider가 resources.resx에서 열 수 있다고 알았습니다.
글쎄, 그건 작동하지 않았다.
프로그램에 파일을 추가하거나 온라인 호스팅 등을 사용하지 않고 다른 도움말 옵션을 모르겠으므로 사용자가 디스크를 열면 내장 된 chm을 쓰게됩니다.) 그리고 그것을 삭제하기 (이것은 메모리에서 그렇게 할 수있는 방법을 찾는데 실패한 이후에).
문제는 FileOptions.DeleteOnClose
플래그가있는 파일을 작성하고 그것에 쓰는 것입니다. If I
File.Create(path, 100, FileOptions.DeleteOnClose);
File.WriteAllBytes(path, mychm);
파일은 Create
방법으로 잠겨 있습니다. 을 Create
메서드에 넣으면 파일이 쓰여지기 전에 삭제됩니다.
'File.Create'는 당신에게'FileStream'을줍니다. 쓰기 전용으로 사용하고 해당 필드 주위에 보관하면 문제의 스트림에서 가비지 수집되지 않습니다. 작업이 끝나면 명시 적으로 폐기하십시오. –
그것은 날지 않을 것입니다. 프로그램 (예 : hh.exe, 도움말 뷰어)은 FileShare.Write 및 FileShare.Delete로이 파일을 열어야하며 그렇게하지 않을 것입니다. 그러한 비현실적인 요구 사항에 대한 도움을 요청하는 것은 유용하지 않습니다. –
왜 도움말 파일을 만들고 삭제하지 않고 도움이 필요한 다른 프로젝트를 만들고 여기에 설명 된대로 exe 파일에 병합하십시오 : https://stackoverflow.com/questions/10137937/merge-dll-into-exe. – Nick