我的WF應用程序需要一個excel文件才能正常工作。有沒有辦法將該文件添加到項目中,並且當用戶安裝我的應用程序時,它會自動將其自身置於默認路徑中?Windows窗體應用程序:在應用程序上添加文件安裝
感謝
我的WF應用程序需要一個excel文件才能正常工作。有沒有辦法將該文件添加到項目中,並且當用戶安裝我的應用程序時,它會自動將其自身置於默認路徑中?Windows窗體應用程序:在應用程序上添加文件安裝
感謝
您可以嵌入在文件中的可執行程序集:
將文件添加到項目中。
選擇在解決方案資源管理器並打開屬性(F4)的文件。
將「生成操作」爲「嵌入的資源」。
在你的代碼,加載資源流,並將其複製到目標文件流:
var assembly = Assembly.GetExecutingAssembly();
using (var resourceStream = assembly.GetManifestResourceStream("YourNamespace.ExcelFile.xlsx"))
using (var targetStream = File.OpenWrite("targetFile.xlsx"))
{
resourceStream.CopyTo(targetStream);
}
確保YourNamespace
,你已經把Excel文件在您的項目目錄結構的命名空間相匹配。
This Knowledge Base article對程序有詳細的解釋。
將文件添加到您的項目,並設置其生成操作爲「複製,如果新」。之後,應該在安裝應用程序時與您的二進制文件一起部署。但是,請注意,此副本應視爲只讀。
如果您需要更改保存到安裝後的文件,那麼你將其複製到用戶的配置文件中的Application Data文件夾:
var appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
var writableFilePath = Path.Combine(appDataFolder, "MyApplication\\MyExcelFile.xlsx");
// ensure directory exists before copying to it:
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(writableFilePath));
...和使用,而不是隻讀版本的文件只要它已經存在。
是Excel文件要由應用程序在運行時改變(因而需要被安裝在具有寫權限的目錄中的非管理員用戶),或只是能夠從任何地方你決定要加載的資源把它放?如果是後者,我建議將它作爲嵌入式資源並在運行時直接從程序集中讀取它。 – adv12