Güncelleştirme: Bu hatayı yeniden üreten örnek bir proje burada Microsoft Connect'te bulunabilir . Ayrıca , aşağıdaki kabul edilen cevapta verilen çözümün bu örnek proje üzerinde çalıştığını test ettim ve doğruladım . Bu çözüm sizin için işe yaramıyorsa, muhtemelen farklı bir sorun yaşıyorsunuz (ayrı bir soruya aittir).
Bu daha önce sorulan bir soru, hem burada Stack Overflow'da hem de diğer yerlerde, ama şimdiye kadar bulduğum önerilerin hiçbiri bana yardımcı olmadı, bu yüzden yeni bir soru sormaya çalışmalıyım.
Senaryo: Basit bir Windows Forms uygulamam var (C #, .NET 4.0, Visual Studio 2010). Çoğu diğer formun miras aldığı birkaç temel formu vardır, veritabanı erişimi için Entity Framework (ve POCO sınıfları) kullanır. Hiçbir şey fantezi, çoklu iş parçacığı veya başka bir şey yok.
Sorun: Hepsi bir süre iyiydi. Sonra, uygulamayı başlatmak üzereyken, tüm mavi, Visual Studio inşa başarısız oldu. Ben uyarı var "Silme dosyaya '... bin \ Debug \ [ProjeAdı] .exe' yoluna. Erişim engellendi '[ProjeAdı] .exe ... Bin \ Debug \' edilemiyor." ve "obj \ x86 \ Debug \ [ProjectName] .exe 'dosyası' bin \ Debug \ [ProjectName] .exe 'dosyasına kopyalanamıyor. İşlem' bin \ Debug \ [ProjectName] .exe dosyasına erişemiyor “çünkü başka bir işlem tarafından kullanılıyor.” (Yeniden oluştururken hem uyarı hem de hata alıyorum, ancak yalnızca Build çalıştırılırken hata alıyorum - bunun önemli olduğunu düşünmüyor musunuz?)
Uyarı ve hata mesajının söylediklerini gayet iyi anlıyorum: Visual Studio açıkçası exe dosyasının üzerine yazmaya çalışırken aynı zamanda bir sebepten dolayı bir kilit var. Ancak, bu soruna bir çözüm bulmama yardımcı olmuyor ... Çalıştığım tek şey Visual Studio'yu kapatıp yeniden başlatmak. Daha sonra bazı formlarda değişiklik yapana kadar bina ve lansman işe yarar, o zaman yine aynı problemim var ve yeniden başlatmak zorundayım ... Oldukça sinir bozucu!
Yukarıda bahsettiğim gibi, bu bilinen bir sorun gibi görünüyor, bu nedenle birçok önerilen çözüm var. Burada zaten denediklerimi listeleyeceğim, böylece insanlar neyi atlayacağını biliyorlar:
- Yeni bir temiz çözüm oluşturmak ve sadece eski çözümden dosyaları kopyalamak.
Aşağıdakilere projenin derleme öncesi etkinliğine eklenmesi:
if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
Proje özelliklerine (.csproj dosyası) aşağıdakileri ekleme:
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Ancak, hiçbiri benim için çalışmadı, muhtemelen neden biraz sinirli olmaya başladığımı görebilirsiniz. Başka nereye bakacağımı bilmiyorum, umarım birisinin bana verecek bir şeyi vardır! Bu VS'de bir hata mı ve eğer varsa bir yama var mı? Yoksa yanlış bir şey mi yaptım, dairesel bir referansım veya benzeri bir şey var mı, eğer öyleyse nasıl öğrenebilirim?
Herhangi bir öneri son derece takdir :)
Güncelleme: As açıklamada aşağıda belirtilen, ben de aslında o Process Explorer ile kontrol ettim olduğunu dosyasını kilitliyor Visual Studio.