我通过resx将我的test.bat
添加为资源。
proc.StartInfo.FileName = myNamespace.Properties.Resources.test;
但上面说
System.ComponentModel.Win32Exception: The system cannot find the file specified.'
我该如何解决这个问题?
下面是我的完整代码:
public async void button_A_Click(object sender, EventArgs e)
{
button_A.Enabled = false;
await Task.Run(() => {
var proc = new Process();
proc.StartInfo.FileName = LOS_Installer.Properties.Resources.test;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.Arguments = path;
if (proc.Start())
{
void outputCallback(string data)
{
textBoxLog.AppendText(data);
textBoxLog.AppendText(Environment.NewLine);
}
proc.OutputDataReceived += (_, e) => Invoke(outputCallback, e.Data);
proc.ErrorDataReceived += (_, e) => Invoke(outputCallback, e.Data);
proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
}
proc.WaitForExit();
});
button_A.Enabled = true;
}
次要问题:看起来资源管理器并不关心文件的扩展名。那么如果我有两个同名但扩展名不同的文件呢?
1条答案
按热度按时间xiozqbni1#
如果嵌入的
test.bat
包含此文本:目标是以编程方式运行它...
...从嵌入式资源:
然后,这里有一种方法将其复制到一个临时文件并运行它(请参阅注解中的说明)。