2009-12-17 39 views
5

我在Visual Studio中有一個由5個項目組成的解決方案。項目生成到程序集(.dll)。我將每個項目的輸出路徑設置爲\ my-web-server \ wwwroot \ bin,這在一個項目中可以正常工作。在我所有項目的屬性中,我將輸出路徑設置爲相同的目錄,但是當我嘗試構建除一個項目之外的所有項時,出現錯誤:無法將文件複製到構建中的服務器。訪問路徑被拒絕

無法複製文件「obj \ Release \ Index.dll「複製到」\ my-web-server \ wwwroot \ bin \ Index.dll「。訪問路徑'\ my-web-server \ wwwroot \ bin \ Index.dll'被拒絕。

我認爲這可能是一個權限問題,因爲我的組織保持鎖定狀態,但我無法控制授予權限。任何幫助正確的方向非常感謝。

回答

17

它一定是愚蠢的。我手動刪除了.dll,然後重建。看起來一切正常。謝謝。

+1

+1如果下一個人可以運行SysInternals工具在刪除文件之前查看導致拒絕訪問(即文件鎖定)的原因並報告非常感謝的根本原因。 – 2012-07-15 23:56:09

+1

運行SysInternals procexp:devenv.exe坐在文件上。卸載項目不起作用,但在關閉解決方案後,我可以從bin中刪除System.Web.WebPages.Deployment.dll。呃。 – OzrenTkalcecKrznaric 2013-06-19 13:47:09

+0

完美!刪除bin文件夾中的所有文件並構建它之後工作正常。 – 2014-01-10 08:00:29

0

最有可能的程序正在運行使用該庫。

運行某些東西進行調試時發生這種情況,我忘記關閉它(未連接到IDE調試器)。

由於這看起來像一個網站,這可能是由於該網站託管在開發構建文件夾中,並且有人正在訪問它。

+0

我想不出任何可以訪問該文件的東西。我甚至在IIS中停止了該網站,然後在停止時嘗試建造。不行。 – 2009-12-17 18:18:42

0

Aequitarum said類似,它很可能是鎖定文件,因爲它正在使用中。既然你有多個項目,你最可能有他們之間的引用。並且,由於您已將所有項目輸出到同一個文件夾,因此如果將這些文件設置爲在子項目中進行部署,則任何引用的項目都很可能會被複制多次。 (在C#Web應用程序中,您可以查看引用的屬性並查看「Copy Local」屬性。)如果您將MsBuild項目設置爲使用多個處理器進行構建,則兩個子項目都嘗試複製該文件大約在同一時間,一個出錯。

這是一個非常獨特的情況,但它是可能的。

2

剛剛有同樣的問題,建立了一個新的項目/解決方案,得到它所有的工作,然後添加到TFS。

不幸的是,我沒有在添加之前清理構建,這意味着一些不應該在源代碼管理下的文件被讀取(未檢出)。 在重建之前手動刪除文件解決了問題。

3

我的解決方案是刪除每個項目中的bin和obj文件夾中的所有內容。只需按照here所述運行此PowerShell腳本。

3

我有同樣的問題。 Visual Studio(devenv.exe)的副本仍然在後臺運行,並保持特定的dll鎖定狀態。

3

從bin文件夾中刪除所有DLL並構建解決方案。

0

工作液

只要進入任務管理器和搜索詳細信息(如果它的Win10),並與您的應用程序名稱搜索(以便於搜索只看你的Windows用戶ID明智)

然後右鍵單擊顯示屬性。只需授予管理員訪問權限即可。

這對我來說都很好。 (我正在掙扎1周,而且我的時間更多了)

0

它看起來像WSearch服務鎖定文件並且不釋放它們。我在WINDOWS 10上禁用了該服務,並能夠重建該解決方案。

相關問題