2013-10-13 4 views
0

Я пытаюсь использовать filestream для получения * .exe-файла из моих ресурсов. мой код это: filerdr = New FileStream(My.Resources.ResourceManager.GetStream("filename.exe"), FileMode.Open) , но я получаю эту ошибку с этимИспользовать filestream для чтения файла из ресурсов

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 Затем '' '' '' '' '' '' End If –

+0

Какая часть этого может быть вы не обойдетесь без использования «FileStream»? –

ответ

0

Я нашел решение. первый я должен был изменить свой переменный "filerdr" от FileStream к UnmanagedMemoryStream, а затем я должен был изменить Resources.resx Из этого

<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> 

Для этого

<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. Это решило проблему, и мой код начал работать.

Смежные вопросы