2011-10-11 101 views
4

我遇到了Visual Studio Express 2010 c#版本的問題。 我有一個參考DLL的項目。這個DLL有標記爲 生成操作外部Excel文件=內容 複製到輸出目錄=複製始終用clickonce在c#解決方案中部署外部文件

當我構建解決方案,這個Excel文件正確複製到BIN \發佈解決方案文件夾。

但是如果我嘗試部署相同的解決方案,使用Publish嚮導,Excel文件不會複製到安裝目錄中。

請問誰能幫助我?

回答

4

您是否在說Excel文件僅被您在項目中包含的dll引用?這是次要參考,ClickOnce不會看到它並自動包含該文件。

首先,在你的dll上,我假設它是由你的項目直接引用的。如果是這樣,那麼一定要將其添加到項目中,並將生成操作設置爲「無」,將「複製到輸出目錄」設置爲「不要複製」。然後刪除對它的引用並重新添加它,將它指向現在包含在項目中的版本。將「複製本地」屬性設置爲「true」。這將確保dll本身得到正確部署。對於Excel文件,您將不得不將其添加到您的項目中。將構建操作設置爲「內容」並將「複製到輸出目錄」設置爲「始終複製」。它不會被自動包含,因爲它是ClickOnce應用程序的輔助引用,而不是像dll那樣的直接/主要引用。

0

嘗試包含這個文件到溶液中,然後將「複製到輸出目錄」爲「始終複製」

0

它出現在你的文件是不是在「PublishFiles」列表中列出。打開項目屬性,進入「發佈」選項卡,點擊「應用程序文件」按鈕,確保你看到發佈狀態爲「包含」的文件列表中的DLL文件。

+0

謝謝,在「應用程序文件」窗口中引用的DLL已正確列出,其中「發佈狀態」設置爲「包含」。但不知道如何在此菜單中包含外部Excel文件... – stexcec

+0

您可能還想將Excel文件添加到項目中,將它的生成操作和屬性設置爲您爲DLL文件所做的操作(複製到輸出目錄和複製如果更新或始終,取決於您的選擇)。 – Arun

8

打開發佈屬性爲您的ClickOnce項目。然後點擊'Application Files ...'按鈕。這將啓動一個對話框,您可以控制發佈軟件包中包含哪些文件。

爲了讓您的XLSX文件(或任何其他非構建文件)出現在該對話框中,你需要標記是在屬性窗口中的生成操作「內容」。

+0

謝謝,但是如何添加未在此菜單中列出的文件? – stexcec

+1

@stexcec,我編輯了我的回覆。將文件標記爲「內容」並顯示出來。 –

+2

@PhilippSchmid,如果這個文件在另一個類庫中呢? – Seva

0

你可以通過插入Excel文件作爲一種資源,然後寫出來這樣避免此問題:

File.WriteAllBytes(DestinationFileName, Properties.Resources.MyResourceFile); 

我做一個假設,即Excel文件是某種模板您正在使用從中構建輸出文件。