簡體   English   中英

如何使用Visual Studio在C#應用程序中發布Access數據庫?

[英]How do I publish an Access database with my C# application using Visual Studio?

我試圖弄清楚如何發布我編寫的應用程序。 我們當時沒上課,我的程序設計老師遇到了一些健康問題,目前無法使用。

我找到了“發布”選項,可以用安裝程序來創建一個文件夾...但是我打開了它,它只是打開了程序,並無限地向我發送垃圾郵件,抱怨我的Access數據庫(位於bin中) >在構建階段進行調試)(從我不認識的一些奇怪的路徑)無法訪問。 我嘗試使用WiX,但嘗試安裝時卻出現錯誤,說它無權訪問安裝文件夾(以admin身份運行)。 我已經搜查了幾個小時,戳了一下,探索了一下,而且距離還不算太遠。 任何人都可以ELI5嗎?

當您將“發布”選項用於桌面應用程序時,VS將創建一個單擊一次安裝程序,該安裝程序會將其了解的所有文件放置在適當的位置。

不幸的是,它無法猜測您的應用程序需要哪些其他文件,因此您需要明確地告訴它。

如果右鍵單擊“項目”->“屬性”,請轉到“發布”選項卡,然后單擊“應用程序文件”按鈕,您將看到將添加到安裝程序中的所有文件。

接下來,單擊底部的“顯示所有文件”。 查找數據庫,然后將“發布狀態”更改為“數據文件”。

請注意,我只使用過一次單擊安裝程序來安裝永不修改的靜態文件(如圖像/文檔),僅在以后的發行版中將其替換。 我不確定在更新過程中是否會保留您的(修改過的)數據庫,但我懷疑不會。

如果“單擊一次”安裝過程過於簡單,無法滿足您的需要,則VS2010會提供“安裝項目”,以創建支持邏輯/代碼的更復雜的安裝程序。 對於VS2012,通常建議的選項是Wix 不幸的是,它的學習曲線很陡峭,但是它幾乎可以完成您需要的任何事情。

我相信VS2013及更高版本通過擴展再次設置了項目,但我自己沒有嘗試過。

編輯:

解決此問題的最簡單方法可能是根據應用程序的執行位置以編程方式設置連接字符串。

請注意,按照此答案, clickonce應用程序通常是在用戶配置文件目錄的深處執行的(另請閱讀以下有關數據目錄的答案 )。 這是ClickOnce工作方式的副作用(它希望安裝在保證用戶具有寫訪問權的位置)。

檢查該文件夾中是否確實存在.mdb。 如果不是,則需要調整.mdb的安裝程序或屬性。 假設它與可執行文件位於同一位置,則可以告訴應用程序在哪里找到它...

string dbPath = IO.Path.Combine(
           AppDomain.CurrentDomain.BaseDirectory,
           "access.mdb");

string connectionString = String.Format(
           "Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}",
           dbPath);

我不確定您為什么認為安裝程序添加的數據庫文件位於C:\\下的目錄中。 您可能沒有查看安裝程序創建的文件。

為避免混淆,請嘗試將名稱從access.mdb更改為其他名稱( temp.mdb ?),構建安裝程序,然后重命名為access.mdb 現在,在安裝應用程序后,請確保您正在查找的文件現在稱為temp.mdb 如果不是,則說明您查找的文件錯誤。

此鏈接具有數據庫連接的完整演示,並帶有數據庫發布C#應用程序。 該應用程序還在另一台計算機上運行。 如何使用Access數據庫發布C#應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM