在Visual Studio中使用嵌入式资源的代码或命令

3ru*_*tu5 4 c# embedded-resource visual-studio

有人可以为我提供使用C#访问嵌入式资源的起点或代码吗?

我已经成功嵌入了几个批处理文件,脚本和CAD工程图,我想运行该批处理并将脚本和CAD文件复制到该批处理文件中指定的位置。

我正在努力寻找如何指定项目是什么并在EXE中设置路径。下面的代码是我认为可以使用的代码,但是它失败了,我在网上找到的其他代码都与XML文件有关。

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

老实说,我什至不知道我是否正在寻找正确的方法来做这件事,因为这是我第一次使用C#或Visual Studio。

Ork*_*nov 5

打开解决方案资源管理器,添加要嵌入的文件。右键单击文件,然后单击Properties。在Properties窗口中,更改Build ActionEmbedded 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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)