我有一个二进制文件,用作操作某些文件的命令行工具 - tool.exe。我想在我的Visual Studio 2008项目中包含它,并从我的C#代码中使用它。我把它放在一个名为“Resources”的文件夹中,它还包含我项目使用的其他文件。
我想做Process myproc = Process.Start("Resources/tool.exe");
之类的事情,但我认为C#存在问题,因为它正在查看文件系统而不是项目。
如何做到这一点?
答案 0 :(得分:4)
您几乎都在描述正确的方法。您必须确保将二进制文件设置为相对于应用程序复制到正确的位置 - 您可以通过将Build action
设置为content
(在文件属性中)来实现此目的,这样它就会被复制到正确的位置。
此构建操作默认Copy to Ouput directory
属性为Copy Always
,在这种情况下,Copy if newer
是安全的。确保它是这两个中的一个。
有关更多详细信息,请参阅this所有问题和答案。
答案 1 :(得分:0)
Process myproc = Process.Start("./Resources/tool.exe");
答案 2 :(得分:0)
是的,您的应用程序将查找文件系统,相对于您的应用程序.exe文件。
您可以在项目中包含二进制文件,并将它们复制到输出目录中。将二进制文件添加到项目后,选择它并转到其属性。 “Build action”应设置为“Content”,“Copy to Output Directory”应设置为“Copy always”或“Copy if newer。”
在输出目录中构建一个文件夹并将文件添加到该文件夹可能会有点困难;您可能不得不满足于将二进制文件放在与可执行文件相同的目录中。一个值得关注的地方是项目构建操作;您可以添加设置文件夹的后期构建脚本,并将二进制文件移动到正确的位置。