2010-12-16 13 views
12

Na pierwszy rzut oka mój problem wydawał się być powszechny: w niektórych moich projektach mam niestandardowe zadanie MS Build. Po skompilowaniu projektów nie mogę już skompilować zadania kompilacji - zestaw zadań budowania jest zablokowany przez program Visual Studio.Niestandardowy zestaw blokad zadań MSBuild

Znalazłem wiele wpisów tutaj mówiących: "Dziedzicz tylko z AppDomainIsolatedTask".

Moje zadanie już istnieje. Zgromadzenie nie zawiera niczego innego niż to zadanie. Wydaje się, że AppDomain została rozładowana, co najmniej zdarzenie DomainUnload jest uruchamiane. A zależne złożenia są poprawnie rozładowywane.

Jednak zestaw zawierający samo zadanie budowania jest zablokowany przez devenv.exe (który dwukrotnie sprawdziłem przez ProcessExplorer).

Znalazłem inny wpis z informacją "Ustaw właściwość GenerateResourceNeverLockTypeAssemblies true", co brzmiało obiecująco, ale też nie pomogło.

Zastanawiam się, co jeszcze może pójść nie tak. Zachowanie jest takie samo, bez względu na to, czy używam VS2008 czy 2010.

+0

Sprawdź odpowiedzi na http://stackoverflow.com/questions/3371545/visual-studio-2008-locks-custom-msbuild-task-assemblies – alexandrul

+1

To nie jest to samo pytanie. Mam ten sam problem, a problemem NIE jest to, że zestaw zadań jest zablokowany (co jest zrozumiałe). Problem polega na tym, że każdy plik DLL, który ładujesz w swoim zadaniu (np. Assembly.LoadFrom()), nigdy nie zostanie zwolniony nawet po usunięciu AppDomain, a nawet jeśli utworzysz inną AppDomain samodzielnie i załadujesz bibliotekę DLL z tego miejsca: dll jest nadal zablokowany po zamknięciu AppDomain. Ten sam kod działa poprawnie w aplikacji konsolowej (program wciąż działa, ale biblioteka dll zostanie zwolniona, jeśli zamkniesz aplikację), ale w przypadku zadania VS zachowuje się inaczej – Sheepy

+0

To nie jest odpowiedź na twoje pytanie, ale jeśli robisz jakiś kodegenerator z VS IDE, podczas gdy IDE działa, to lepiej lepiej wykorzystać szablony T4 lub niestandardowe narzędzie VS. To powinno starannie rozwiązać Twój problem, szczególnie jeśli używasz T4 Templates. –

Odpowiedz

-3

Można to rozwiązać, zmieniając zabezpieczenia uprawnień systemu plików. Umieść bieżącego użytkownika jak współwłaściciela zablokowanego pliku.

Powiązane problemy