我正在尝试整合我的应用程序的依赖项。在这种情况下,我有一个控制台应用程序(MAD - MPEG音频解码器),我想嵌入我的应用程序。我已将其添加为资源,但如何将其作为文件引用?这是有问题的代码(VB.NET):
With MAD.StartInfo
.FileName = My.Resources.madplay
.Arguments = ""
.UseShellExecute = False
.RedirectStandardInput = True
.RedirectStandardError = True
.RedirectStandardOutput = True
End With
MAD.Start()
MAD.BeginOutputReadLine()
显然这不起作用。我需要将My.Resources.madplay作为FileName的文件引用。有没有办法做到这一点,或者我应该将资源复制到光盘并在完成后将其删除?
答案 0 :(得分:0)
最佳做法是将从控制台应用程序中完成工作的代码移动到类库(DLL文件)中,然后将该DLL导入到WinForms项目和控制台应用程序项目中。 /强>
通过将所有音频解码逻辑放入两个应用程序使用的单个库中,这仍然可以实现整合代码的目标,同时还允许您分离显示功能(无论它在控制台应用程序中是否最小) )在两个应用程序之间存在差异。
否则,您将无法执行作为嵌入式资源存在的文件而无需将其提取到文件中。我想你可以把它做成一个临时目录,但是你将会得到一个不那么重要的任务,即获取窗口句柄并尝试在Windows窗体中托管它。大多数你会发现这样做的方法,我很难相信你的用户会喜欢当他们使用一个设计得很好的Windows窗体时,会向他们抛出一个控制台应用程序。再说一遍,如果您要尝试做的就是通过在WinForms应用程序的幕后调用来自控制台应用程序的代码,在两个应用程序中提供解码音频的通用功能,放置它进入动态链接库是目前最好的解决方案。
答案 1 :(得分:0)
我最终使用WriteAllBytes()将其写入文件,然后将其删除。