2010-12-16 101 views
12

乍一看,我的問題似乎是一個常見問題:我在我的一些項目中有一個自定義的MS構建任務。編譯項目後,我無法再編譯構建任務 - 構建任務程序集由Visual Studio鎖定。自定義MSBuild任務鎖彙編

我在這裏發現很多帖子說'只是從AppDomainIsolatedTask繼承'。

我的任務已經完成。這個任務沒有其他任何東西。 AppDomain似乎被卸載,至少DomainUnload事件被觸發。並且,相關程序集正確卸載。

但是,包含構建任務本身的程序集由devenv.exe鎖定(我通過ProcessExplorer進行了雙重檢查)。

我發現另一篇文章說'設置GenerateResourceNeverLockTypeAssemblies屬性爲true',這聽起來很有希望,但也沒有幫助。

所以,我不知道還有什麼可能會出錯。無論我使用VS2008還是2010,行爲都是一樣的。

+0

檢查答案http://stackoverflow.com/questions/3371545/visual-studio-2008-locks-custom-msbuild-task-assemblies – alexandrul 2011-01-19 13:15:28

+1

這不是同一個問題。我遇到同樣的問題,問題不在於任務程序集被鎖定(這是可以理解的)。問題是,即使在你的任務的AppDomain被處置之後,你在任務中加載的任何dll文件(例如Assembly.LoadFrom())都不會被釋放,即使你自己創建另一個AppDomain並從那裏加載dll:關閉AppDomain後,dll仍然被鎖定。相同的代碼在控制檯應用程序上工作正常(程序仍在運行,但是如果你關閉了應用程序域,該DLL將被釋放),但是在VS任務上它的行爲不同 – Sheepy 2011-07-14 00:31:10

+0

這不是你的問題的答案,但如果你在做某些類型的代碼來自VS IDE內,而IDE正在運行,那麼您最好利用T4模板或VS自定義工具。這應該整齊地側面你的問題,尤其是如果你使用T4模板。 – 2013-03-05 23:32:40

回答

-3

它可以通過更改文件系統權限安全性來解決。把你當前的用戶像鎖定文件的共同擁有者一樣。

相關問題