簡體   English   中英

將我的DLL部署到GAC以與ClickOnce App一起使用

[英]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中。 您需要創建MSI或提升權限才能執行此操作。

通常,除非解決特定問題,否則應避免使用GAC。 安裝尺寸是否比ClickOnce下載更痛苦 - 使用50K調制解調器或高速LAN的用戶?

Chris Sells有一篇很好的文章說明為什么你應該避免使用GAC ,並且還有其他各種堆棧溢出帖子 - 請看這里這里這里

在一天結束時,您需要評估利弊,並確定什么是最佳行動方案。

這是我過去所做的,對我來說效果很好。 我有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。

谷歌沒有 ,也沒有。

您必須查看其他安裝程序工具,例如創建MSI安裝程序。 這聽起來很奇怪,但我解決安裝大小的第一個想法是擁有兩個安裝程序 一個用於在GAC中安裝依賴項,用戶只需運行一次,另一個安裝程序(我猜可以使用ClickOnce)來安裝實際應用程序。 使用此方法,理論上可以依賴較小的ClickOnce部署來進行所有未來的應用程序更新。

你怎么知道每次下載完整的15 MB。 clickonce對話框總是說明,但它實際上並沒有下載所有文件,只有那些哈希在清單中有變化的文件。 鑒於有可能從具有不同URL的CD進行部署以進行更新檢查。 這樣您就可以第一次從CD安裝,從那時起應用程序只能從您發布的站點更新自己。

暫無
暫無

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

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