簡體   English   中英

ClickOnce - 無法發布,因為項目無法構建

[英]ClickOnce - Cannot publish because a project failed to build

當我嘗試發布我的(WPF,C#)應用程序時,我收到以下錯誤:
無法發布,因為項目無法構建。
找不到文件'obj \\ x86 \\ Debug \\ MyAPP.exe'
無論我在哪里發布,我都會收到這些錯誤:發布向導,構建菜單或右鍵單擊項目 - 發布。
首先它工作正常,但我做了以下事情:
我將計算機的日期更改為10/10/2013,我正在嘗試別的東西。
我忘了這個,然后點擊構建。 然后我在電腦上設置了正確的日期。 之后我得到了這些錯誤。
每次我單擊運行Visual Studio構建項目是否有項目更改。
我也注意到,當我在2013年10月10日之后設置日期時,它工作正常。
我猜我在我的項目中尋找一些設置日期的設置。
我嘗試了構建,重建,清潔解決方案。

這是安裝了加載項時可能出現的Visual Studio問題。 不使用“發布”選項卡中的“發布”按鈕,而是使用Visual Studio頂部菜單中的“生成/發布”。

如果您使用“發布”按鈕,它會在執行構建之前運行加載項(或類似的東西)。 如果您使用菜單中的Build,它會直接進入msbuild並忽略您安裝的任何加載項。

如果您安裝了DevExpress但仍有問題,請查看以下文章: http//www.devexpress.com/Support/Center/p/Q260132.aspx

在日期恢復正常后,關閉VS並嘗試刪除* .sln文件旁邊的* .suo文件,然后重新打開解決方案

我不確定你的開發機器究竟是如何被這種方式搞砸的,但這也開始發生在我們小組的幾個開發人員身上。

在研究它之后,看起來Visual Studio(在我們的例子中是2010)使用的內置構建/發布腳本在它執行操作的順序中存在缺陷。 最重要的是,它會在OBJ目錄上運行清理,刪除目標EXE文件,然后發布步驟才能獲取它。

解決方案
這有點像一個hacky解決方法,但它解決了我的問題。

解決方法是在發布步驟之前將文件從/bin/文件夾復制回/obj/文件夾。 遺憾的是,我無法通過IDE指定BeforePublish事件,因此您必須在文本編輯器中編輯.vbproj文件。

在最終的</project>標記之前添加以下部分。

<Target Name="BeforePublish">
<Copy SourceFiles="$(TargetPath)" DestinationFolder="$(IntermediateOutputPath)" />
</Target> 

我解決了我的問題。 問題是某些文件的“修改”時間。 我使用程序Timestamp來修復它。

正如我在我的問題中所說,問題是我構建了解決方案,日期是在未來。 因此,每次我按下F5 Visual Studio都會再次構建整個解決方案而Publish ClickOnce無法正常工作。

只需創建一個新的ClickOnce清單證書,它就會再次運行。

如果沒有其他工作,請試試這個:

  1. 將您的日期設置為正確的日期。
  2. 關閉VS后,刪除解決方案的所有bin和obj文件夾。
  3. 創建一個新的空解決方案。
  4. 將現有項目添加到解決方案中。
  5. 添加所需的引用。
  6. 重建,以確保你沒有錯過任何東西。
  7. 發布。

如果您願意,您也可以嘗試之前的步驟1,2,6,7,如果您不想制作新的解決方案。

我今天遇到了這個問題。 在我的特定情況下,它是由Microsoft Windows UpdateMicrosoft安全通報2661254 (關於最小證書密鑰長度)引起的。

我卸載了更新和發布開始按原樣運行。 這只是一個臨時工作,意味着你應該重新生成你的密鑰/證書。

當我交換git分支時,我遇到了這個錯誤。 A Rebuild All為我解決了這個問題。

在我的情況下,當我在.csproj文件中添加以下部分時出現問題:

<Target Name="AfterBuild">
</Target>

關閉和打開Visual Studio為我工作。

我有時遇到ASP.NET項目發布問題,因為發布向導無法刪除嘗試將文件發布到的目錄中的文件。

嘗試在發布之前手動清除這些文件。 還要檢查輸出窗口; 它有時會給你一些提示,說明發布失敗的原因。

暫無
暫無

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

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