2016-09-07 52 views
2

誰能給我提供一個起點或代碼訪問使用C#嵌入的資源?代碼或命令來使用嵌入在Visual Studio資源

我已經成功地嵌入一對夫婦的批處理文件,腳本和CAD圖紙,我想運行批處理和腳本和CAD文件複製到批處理文件中指定的位置。

我在努力尋找如何指定的項目是什麼,以及設置EXE中的路徑。下面的代碼是我認爲會起作用的代碼,但它失敗了,我在網上找到的其他代碼都與XML文件相關。

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

老實說,我不知道如果我在尋找正確的方法來做到這一點,因爲這是使用C#或Visual Studio中我的第一次。

+0

不知道如何相關,這是但我遇到了'html'和'hta'文件類似的問題:http://stackoverflow.com/questions/37965304/how-to-store-hta-html -file-in-project-resources-and-use-in-program – Bassie

+0

關於如何執行'.bat'文件的細節,請看這個問題 - 看起來你可能需要在運行它們之前將它們複製到磁盤上:http:/ /stackoverflow.com/questions/15141010/how-to-run-embedded-batch-file-using-process-start-in-c-sharp – Bassie

回答

3

打開Solution Explorer中添加要嵌入的文件。右鍵點擊文件,然後點擊Properties。在Properties窗口中將Build Action更改爲Embedded 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

我分手的代碼示例一些,因此不會出現你的'彙編「聲明(等)都是文件頂部的'using'語句的一部分。讓它看起來像任何人都可以輕鬆閱讀的真實代碼。 – krillgar

+0

@krillgar隨意編輯答案 –

+0

謝謝,我真的不明白的代碼,以及它如何可以讓我選擇特定的文件,但它讓我做什麼開始。 – 3rutu5

相關問題