2016-09-07 48 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

相关问题