vb.net - 如何在执行期间嵌入文件?

时间:2014-01-13 21:42:41

标签: vb.net resources publish

在winforms项目中使用VS2010 Professional和vb.net。

我正在尝试在我的项目中包含一个.bat文件,以便应用程序可以访问它 在用户安装我的版本后运行它。

我已将文件带入我的资源。 我已将其属性设置为

"Build Action: Embedded Resource"
 and 
"Copy to Output Directory: Copy Always"

在我的代码中,我有:

strPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
strPath = Right(strPath, strPath.Length - 6)

  Dim myProcess As New Process()
  Try  
     myProcess.StartInfo.UseShellExecute = False
     myProcess.StartInfo.FileName = strPath & "\resources\myfile.bat"
     myProcess.StartInfo.CreateNoWindow = True
     myProcess.Start()
     myProcess.WaitForExit()
  Catch e As Exception
      MessageBox.Show(e.Message)
  End Try

当我运行它时它适用于我,但是在我构建它之后,我没有在构建中的任何地方看到.bat文件,它在任何其他机器上都不起作用。

为什么不使用我的构建文件复制文件?

感谢。

1 个答案:

答案 0 :(得分:0)

  

批处理文件(.bat)基本上是一个文本文件。你可以嵌入文件   通过资源设计器扩展.txt,然后创建一个   作为.bat文件在硬盘驱动器上临时复制,并从中运行   那里。

     

但如何制作临时副本并运行它?

文件存储为长字符串,只需将字符串写入扩展名为.bat的文件即可。例如,通过项目属性中的Resources选项卡添加名为“test.txt”的文件意味着您可以这样写:

IO.File.WriteAllText("test.bat", My.Resources.test)