我想添加一個.mdb文件到資源,並在運行時我想將.mdb文件複製到另一個位置,請執行連接運行它並刪除複製的.mdb文件而我完成與.mdb文件處理。使用匯編類在c#中的小問題.net
如何使用assembly.GetManifestStream來做到這一點? 如果沒有與assembly.GetManifestStream什麼是我可以做到這一點的其他方式?
我想添加一個.mdb文件到資源,並在運行時我想將.mdb文件複製到另一個位置,請執行連接運行它並刪除複製的.mdb文件而我完成與.mdb文件處理。使用匯編類在c#中的小問題.net
如何使用assembly.GetManifestStream來做到這一點? 如果沒有與assembly.GetManifestStream什麼是我可以做到這一點的其他方式?
爲什麼你不能只使用文件級副本?不知道你爲什麼想要使用流。只要找到路徑mdb文件和
File.Copy(path1,path2);
是,Assembly.GetManifestStream
是去結合了BinaryReader
和BinaryWriter
的方式。即:
// assembly is Assembly containing the resource
// path is string containing path to write to
Stream source = assembly.GetManifestResourceStream("Namespace.filename.mdb");
BinaryReader br = new BinaryReader(source);
BinaryWriter bw = new BinaryWriter(path, FileMode.Create);
byte[] buffer = new byte[256];
int count = 0;
while((count = br.Read(buffer, 0, 256)) > 0) {
bw.Write(buffer, 0, count);
}
顯然,所有這些IDisposable
S的關係被包裹在一個using
塊。
感謝您的回答傑森,我didn不知道如何爲嵌入式資源做到這一點。我試過了,它工作。 對於那些不知道的東西:只需將需要提取的文件添加到項目中,並將它的「Build Action」屬性設置爲「Embedded Resource」。我將abc.def複製到包含我的.cssproj文件的目錄中,在VS2008的解決方案資源管理器中單擊「顯示所有文件」按鈕,然後右鍵單擊abc.def,然後將其包含在我的項目中。 – AndrewJacksonZA 2010-02-10 06:24:01
如果OP想要在他的項目的輸出文件中嵌入文件,Jason的方法發佈了作品。如果沒有,OP可以將文件的Build Action設置爲Content,設置適當的Copy to Output Directory設置,然後使用一個普通的'File.Copy'然後'File.Delete'。 – AndrewJacksonZA 2010-02-10 06:27:18
問題是我想在編寫單元測試用例時使用這個...我指定在安裝程序中,在拆卸時我想刪除創建的文件,同時刪除它是文件正在使用錯誤 – user251334 2010-02-11 05:10:45