2008-11-04 128 views
0

我有一個使用ClickOnce部署的解決方案。ClickOnce - 覆蓋內容文件

它由一個應用程序,幾個引用的程序集 和一個SQL Server Compact數據庫組成。

還有一個程序集沒有被主應用程序引用, 只是在運行時加載。此程序集需要與應用程序一起部署,與應用程序二進制文件位於同一目錄中。

我設置的Visual Studio編譯後的「插件」集複製到的\ bin \調試(或\ BIN \發佈) 目錄中的UI項目。

然後我將該文件添加到UI項目中, 不作爲參考,而僅僅作爲文件。我將構建操作設置爲「內容」,這種方式顯示在UI項目的屬性/發佈對話框中。

當我第一次發佈應用程序,它的工作就像一個魅力。 但後來我更新了插件程序集,甚至給它一個不同的版本號 並再次發佈,只是發現程序集沒有更新,但上傳的第一個 仍在使用中。 (即使在沒有事先安裝的乾淨的計算機上)。

我做了一些挖掘和發現組件(LibComposites.dll)被複制到 哪裏都ClickOnce應用程序存儲他們的二進制文件 爲他們存儲數據文件的目錄的目錄。

在這兩種情況下,第一次發佈的版本。

在概述中,我引用了一些組件的應用程序:

CONTROL.EXE引用 - > LibLLC.dll,LibDataLayer.dll, LibLLCExtenders.dll
負載在 運行 - > LibComposites.dll(其中 還引用LibLLC.dll)

我需要LibComposites.dll的新版本部署到同一個目錄 爲每個發佈的應用程序。

爲什麼會這樣組裝的第一次發佈的版本仍然被使用

我怎麼能強迫LibComposites.dll由每發佈覆蓋?

回答

4

好吧,我有同樣的問題。這裏是我如何解決它(可能不是理想的,但它的工作原理)

1)如果你的dll或文件在解決方案中,我會把它關閉並重新添加它。 2)進入你的項目的屬性,並選擇發佈和應用程序文件。您需要將文件放在那裏,然後再選擇「包含」(不是自動的...)。

比你可以用新的發佈。我不知道爲什麼它不起作用,如果我不這樣做,但每次發佈,我必須執行這些步驟才能獲取最新版本...

+0

我現在就試試這個解決方案......需要儘快部署這個新版本,並做了一些改變。 日Thnx的信息M8 – TimothyP 2008-11-04 13:00:36

+0

這奏效了:-)之所以能夠立即部署,救了我的屁股:) – TimothyP 2008-11-04 13:07:13

0

讓我明白這一點:您使用Visual Studio的發佈功能來創建和部署ClickOnce包?

祝你好運。

你可能會更好building your own ClickOnce packages using Mage

我從Visual Studio的路線開始,很快發現它是一條不幸的路。學習如何使用Mage,然後查看一些MSBuild選項來「自動化」這個。

0

我有同樣的問題。問題是我在應用程序的根目錄下有dll,他們在項目中「進入」。

解決方案很簡單,只需從項目中排除dll文件,此問題就消失了。