2016-09-07 5 views
2

누군가가 C#을 사용하여 임베디드 리소스에 액세스하기위한 시작점이나 코드를 제공 할 수 있습니까?Visual Studio에서 임베디드 리소스를 사용하는 코드 또는 명령

일괄 처리를 실행하고 스크립트 및 CAD 파일을 배치 파일에 지정된 위치에 복사하려는 배치 파일, 스크립트 및 CAD 도면 몇 개를 성공적으로 임베드했습니다.

항목이 무엇인지 지정하고 EXE 내에서 경로를 설정하는 방법을 찾는 데 어려움을 겪고 있습니다. 아래의 코드는 작동 할 것이라고 생각했지만 실패했고 온라인에서 XML 파일과 관련된 모든 것을 발견했습니다. 나는이 C# 또는 비주얼 스튜디오를 사용하여 내 처음으로이 작업을 수행하는 올바른 방법 찾고 있어요 경우 솔직히 알지도 못하는

System.Diagnostics.Process p = new System.Diagnostics.Process(); 
p.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "\\Batchfile.bat"; 
p.Start(); 

.

+0

아니이게 얼마나 관련 있는지하지만 난'html'와'hta' 파일과 유사한 문제가 발생 하였다 http://stackoverflow.com/questions/37965304/how-to-store-hta-html -file-in-project-resources-and-program-in- – Bassie

+0

'.bat' 파일을 실행하는 방법에 대한 자세한 내용은이 질문을 참조하십시오. - 실행하기 전에 디스크에 복사해야하는 것 같습니다. /stackoverflow.com/questions/15141010/how-to-run-embedded-batch-file-using-process-start-in-c-sharp – Bassie

답변

3

삽입 할 솔루션 탐색기를 엽니 다. 파일을 마우스 오른쪽 버튼으로 클릭 한 다음 Properties을 클릭하십시오. Properties 창에서 Build ActionEmbedded Resource으로 변경하십시오.

Embedding Resource Visual Studio

그 후 당신은 포함 된 리소스가 그것을 실행하기 위해서 파일에 쓸 수 있어야합니다.

using System; 
using System.Reflection; 
using System.IO; 
using System.Diagnostics; 

namespace YourProject 
{ 
    public class MyClass 
    { 
     // Other Code... 

     private void StartProcessWithFile() 
     { 
      var assembly = Assembly.GetExecutingAssembly(); 
      //Getting names of all embedded resources 
      var allResourceNames = assembly.GetManifestResourceNames(); 
      //Selecting first one. 
      var resourceName = allResourceNames[0]; 
      var pathToFile = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + 
           resourceName; 

      using (var stream = assembly.GetManifestResourceStream(resourceName)) 
      using (var fileStream = File.Create(pathToFile)) 
      { 
       stream.Seek(0, SeekOrigin.Begin); 
       stream.CopyTo(fileStream); 
      } 

      var process = new Process(); 
      process.StartInfo.FileName = pathToFile; 
      process.Start(); 
     } 
    } 
} 
+1

나는 그 코드 샘플을 깨뜨릴 것이므로 당신의' 어셈블리'선언 (etc.)은 모두 파일의 맨 위에있는'using' 문장의 일부입니다. 누구나 쉽게 읽을 수있는 실제 코드처럼 보이게하십시오. – krillgar

+0

@krillgar Answer –

+0

감사합니다. 코드를 이해할 수 없으며 특정 파일을 선택할 수있는 방법을 알려주지 만, 어떻게해야 할 지 알 수 있습니다. – 3rutu5