2008-11-14 121 views
4

好的,所以我有VS 2008和SVN。當我「重建所有」時,我的一些.dll文件會從我的bin文件夾中消失。Visual Studio 2008 .dll消失的問題

我有這些.dll的庫文件夾,這就是我從中引用它們。

當我去發佈應用程序的發佈失敗,我認爲他們是相關的。當我重新啓動web.config(更改內容並保存)時,此錯誤消失。但是,發佈仍然失敗。

當我去文件夾和更新svn把他們所有當然回來,但它只是發生了一遍。

謝謝。

+0

什麼樣的Web項目是什麼? Web應用程序項目(帶有.csproj文件)或文件夾/ 2005風格(no .csproj)? – Kev 2008-11-14 03:21:57

回答

4

我假設「Bin」文件夾指的是Visual Studio組裝應用程序可執行版本的構建位置。

通常,我發現手動更改Bin文件夾是遇到「痛苦的新世界」的好方法。一旦我開始讓Visual Studio做它想要的目錄並且讓它獨立,我的問題就消失了。

如果您從您的項目中引用的DLL,它們標記爲「複製本地」(在Solution Explorer中選擇它們,配置在屬性面板中)和Visual Studio將確保他們跨越了複製。

備註:由於Bin目錄由Visual Studio管理,並且具有完全可重複性,所以我建議它(和它的兄弟Obj)不應受源代碼控制。

+0

我有一個類似的問題,但DLL是從bin文件夾中引用的,一旦我添加引用並將「Copy Local」設置爲false,它就會停止刪除它。謝謝! – pauloya 2009-09-23 09:00:31

0

聽起來像構建過程刪除構建您的bin目錄的內容。

我不會在你說你從庫文件夾中引用它們的位置上忘記了它們,它們也存在於bin目錄中。

您的發佈可能由於其他原因而失敗 - 發佈錯誤最有幫助。

更新SVN會將文件恢復到最新版本 - 所以如果你沒有文件,最新版本是存在於你的版本庫中的版本。

檢查事項:

  • 你可能在你的建設 - 接受錯誤的,它聽起來就像DLL的實際上是從解決方案中的其他項目的輸出,所以你應該檢查自己是否正常,或建設他們正在被輸出到一個不同的目錄,而不是你的bin文件夾。

  • 你的Subversion版本庫可能不應該有任何二進制或中間文件,如dll,lib,exe,suo,ncb等等,但這些都是主要的。

  • 在這裏發佈更多詳細信息 - 從它的聲音,似乎你可能會忽略你沒有發佈在這裏的錯誤。

+0

沒有,我在建築精美,個別項目builiding罰款。我同意在某些.DLL的chiecking是不是一個好主意,但我不認爲把他們從會有所幫助。 – 2008-11-14 03:39:28

2

您需要在引用中指定「Copy Local」,這會將它們從庫文件夾中複製到bin目錄中。通常你只應該在源代碼管理中(在庫文件夾中)保留一個DLL副本。如果您控制了bin文件夾源,則可能會遇到構建問題。

+0

這是我的猜測! – 2008-11-14 07:32:29

0

我以前在使用重建時看到過這個 - 我通過在瀏覽器屬性中將這些引用dll標記爲ReadOnly來修復它。

是的,這是hacky,但它保持VS的爪子離開我的dll!

0

你可能有一個默認的Web站點,而不是一個Web應用程序項目。