2013-10-13 84 views
0

我試圖使用文件流從我的資源中獲取* .exe文件。我的代碼是這樣的:filerdr = New FileStream(My.Resources.ResourceManager.GetStream("filename.exe"), FileMode.Open) ,但我得到這個錯誤與它使用文件流從資源中讀取文件

Overload resolution failed because no accessible 'New' can be called with these arguments: 
'Public Sub New(handle As Microsoft.Win32.SafeHandles.SafeFileHandle, access As System.IO.FileAccess)': Value of type 'System.IO.UnmanagedMemoryStream' cannot be converted to 'Microsoft.Win32.SafeHandles.SafeFileHandle'. 
'Public Sub New(handle As System.IntPtr, access As System.IO.FileAccess)': Value of type 'System.IO.UnmanagedMemoryStream' cannot be converted to 'System.IntPtr'. 
'Public Sub New(path As String, mode As System.IO.FileMode)': Value of type 'System.IO.UnmanagedMemoryStream' cannot be converted to 'String'. 

我也曾嘗試:filerdr = New FileStream(My.Resources.filename.exe, FileMode.Open

但仍沒有運氣,請不要給我的變通和請告訴我如何按照我想要的方式做到這一點。

我想補充FileMode.Open,然後把它比作另一個文件,通過使用

If filerdr.ReadByte = filerdr2.ReadByte AndAlso 
    filerdr.Length = filerdr2.Length Then 
'''''''''''' 
End If 
+0

不是'My.Resources.ResourceManager.GetStream(「filename.exe」)'已經返回給你一個流嗎?你不需要'FileStream'。 –

+0

我想添加FileMode.Open。然後把它比作另一個文件,通過使用 如果filerdr.ReadByte = filerdr2.ReadByte AndAlso filerdr.Length = filerdr2.Length然後 「」「」「」「」「」「」 結束如果 –

+0

哪一部分可以你不是沒有使用'FileStream'? –

回答

0

我找到了解決辦法。首先,我不得不從的FileStream改變我的變量 「filerdr」 到UnmanagedMemoryStream,然後我不得不從這個

<data name="MyFile" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
<value>..\Resources\MyFile.exe;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 

編輯Resources.resx對此

<data name="MyFile" type="System.Resources.ResXFileRef, System.Windows.Forms"> 
<value>..\Resources\MyFile.exe;System.IO.MemoryStream, mscorlib, Version=2.0.0.0,   Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 

簡而言之, System.Byte []到System.IO.MemoryStream。 這解決了這個問題,我的代碼開始工作。