![](/img/trans.png)
[英]Programmatically extract the .dlls from clickonce application .deploy files
[英]Deploy my DLLs to GAC for use with ClickOnce App
我該怎么做? 我不應該有任何理由嗎?
我有一個winform ClickOnce應用程序,其中有大約13mbs的DLL不是我的,所以我沒有必要/能夠定期更新它們。
DevExpress(3),Microsoft ReportViewer,Microsoft SQL Replication。 Microsoft SQL SMO。
如果沒有它們被包含在我的ClickOnce應用程序中,我的整個程序大約需要1.5mbs,並且我們的遠程站點具有有限的vpn連接,我真的需要將它放在那里。 每次我做一個小的應用程序更改時,我無法通過我們的網絡向所有用戶發送15mb。
謝謝
為了澄清; 我不想使用 ClickOnce將我的DLL安裝到GAC。 ClickOnce是我的主要應用程序需要使用的。 我想從ClickOnce應用程序中刪除該13mbs的DLL並安裝它們以便在所有本地系統上使用。
如果我能夠通過GAC實現這一目標,那太棒了。 我只需要我的主應用程序三聚體更新。
擴展@kanad的回復......
您的13MB dll只會在用戶第一次安裝應用程序時下載。 這是ClickOnce的一大優勢,用戶只需下載已更改的文件。
但是,令人困惑的是,ClickOnce進度對話框始終顯示應用程序的整個大小 ,即使它可能沒有下載整個應用程序。 我做了大量測試,以確保情況確實如此,並使用帶寬監視器向我自己證明了這一點。
最后,如果您可以控制Web服務器,則可能需要考慮為ClickOnce應用程序啟用壓縮。 它有助於大幅減少下載量。 壓縮是一種痛苦的設置,但本文應該讓你開始。 但是,再一次,壓縮的大小不會反映在ClickOnce進度對話框中。
最好的辦法就是忽略ClickOnce進度對話框中顯示的數字:)
這是我過去所做的,對我來說效果很好。 我有ClickOnce應用程序在GAC中查找其中一些依賴項。 事實上,它每次加載應用程序時都會檢查。 我使用一個簡單的文件來查看依賴是否在GAC中。 如果缺少依賴性,我會顯示一條消息,表明您缺少某些依賴性以及有關如何修復它的一些說明。 然后我發布並下載一個自解壓exe程序,用於在GAC中安裝依賴項。 這是一個小Rube Goldbergen,但它對我來說效果很好。
在可預見的未來第三方控制等方面,我只會將事情放在GAC中。
我有一個非常胖的客戶端,包括MS報告,Infragistics和SMO等我們每周部署大約3.5MB的一個。 我們的許多用途非常偏遠,使用您可以上網的數據卡。
雖然其他答案是正確的,但ClickOnce只會下載一次DLL(如果它們沒有更改)以解決您的直接問題,如果您要在ClickOnce進程之外的GAC中安裝dll並且不想下載這些通過ClickOnce完成DLL,您可以執行以下操作。
通過在ClickOnce->應用程序文件設置中將它們設置為先決條件,從ClickOnce下載中排除這些DLL。
執行此操作時,ClickOnce運行時將在下載之前檢查GAC並確保存在這些DLL。
你怎么知道每次下載完整的15 MB。 clickonce對話框總是說明,但它實際上並沒有下載所有文件,只有那些哈希在清單中有變化的文件。 鑒於有可能從具有不同URL的CD進行部署以進行更新檢查。 這樣您就可以第一次從CD安裝,從那時起應用程序只能從您發布的站點更新自己。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.