Soru NUnit: “Süreç dosyaya erişemiyor… çünkü başka bir süreç tarafından kullanılıyor.”


Ben NUnit GUI sürümünü kullanıyorum ve ben orada şeyleri test çalışırken yüklenen bir test projesi var yüzüme sıkılırdım başladı. Ben Visual Studio içinde bir değişiklik yapın ve sonra çözümü yeniden denerseniz, bu "dosya obj \ Debug kopyalanamıyor \ Foo.dll bin \ Debug hata atar \ Foo.dll. Dosya bin \ erişemez süreç Debug \ foo.dll başka bir işlem tarafından kullanılmakta olduğundan. "

Bu, GUI'ye yüklediğim DLL tabii ki. Sorun olmayacak ve sadece yapı sonra proje başvurusu yenilemek için kullanılan, ancak şimdi bunu engelleme gibi görünüyor. Bu davranışa nasıl geri dönebilirim?

Bu arada, gölge kopyalama ayarını etkinleştirme / devre dışı bırakmayı denedim.

VS2008 SP1 ve NUnit 2.4.8, eğer önemliyse.


25
2018-06-01 15:10


Menşei




Cevaplar:


Bunu anladım: "Birim Gölge Kopyası" hizmeti bir nedenden dolayı kapatıldı. Geri döndü ve her şey normale döndü.


37
2018-06-01 15:59



Düzeltmeyi gönderdiğiniz için teşekkür ederiz! - Tim Stewart
Aynı sorun vardı, düzeltmek harika çalıştı! - John Rasch
Benim için de çalıştı - ama nedenini açıklayabilir mi? Bunun karşısında, Birim Gölge Kopyası hizmetinin VS Oluşturma işlemi ile ilgisi olmamalıdır. - Samuel Jack
@LouisRhys: Windows Hizmetleri. Başlat-> Çalıştır-> services.msc veya başlat menüsü hiyerarşisi ile. - Chris
Birim Gölge Kopyası hizmeti, Windows'un bir parçasıdır. Bana öyle geliyor ki, NUnit yazarları, kendi işlerini yürütmek yerine, OS tarafından sağlanan bir hizmeti kullanmak için iyi bir karar verdiler. Belki de buradaki temel tehlike, geliştiricilerin bloatware'i temizlemeye çalıştığı zaman VSC'nin kapanmasıdır. - Technophile


Ben sadece Nunit proje dosyasını çözüm konumlarına taşıyarak sorunu çözdüğümü eklemek istedim. Nunit'teki herhangi bir gölge kopyalama ayarını değiştirmek veya gölge kopyalama servisini etkinleştirmek zorunda kalmadım.

Yığın Taşması'na bakın - nunit kilitleme dll


10
2017-08-29 11:51



BTW onları aslında aynı dizinde bulundurmak gerekli değildir. Güncelleniyor Project Base NUnit GUI proje ayarlarında çözüm dizini işaret etmek de hile yapar. Birim Gölge Kopyalamaya gerek yok - Kos
+1 kabul edilen cevap olmadığında bu çözüm benim için çalıştı. Eklediğiniz için teşekkürler. - Liath


Soruda belirtilen aynı problemi yaşadım. Aşağıdakileri yaparak makinemde çözdüm:

  1. Visual Studio'da> Solution Explorer> soruna neden olan dll'yi seçin> sağ tıklayın> özellikleri seçin. Bu işlemden sonra dll'nin Dosya özellikleri şimdi görünmelidir.
  2. Dll dosya özellikleri görünümünde; yı kur Çıkış Dizini'ne Kopyala için Daha yeni kopyala.

Eğer varsa Çıkış Dizini'ne Kopyala gibi Her zaman kopyala soruda belirtilen derleme hatasını alacaksınız. Yukarıda belirtilen değişikliği yaparsanız, gitmeli ve dll'iniz yine kopyalanacaktır.


3
2017-07-09 03:32



İyi yakalama, ikisini de cevap olarak işaretleyebilirdim. - Chris
Hmm, projemde bin / obj dizinleri projenin kendisinde yer almıyor, bu nedenle "Dizine Kopyala" seçeneği gerçekte mevcut değil. VSS de yardımcı gözükmüyor, başka seçenekler var mı? - Shagglez


Aynı problemim vardı:

Unable to copy file obj\Debug\foo.dll to bin\Debug\foo.dll. 
The process cannot access the file bin\Debug\foo.dll because it is being used by another process.

Benim durumumdaki sebep iki mecliste aynı isim alanını kullanmış olmama benziyordu:

  1. içinde MyNUnitTestLibrary 'sarılı' test sınıfları "ad bankası {...}"
  2. 'NUnit Quick Start' ayrıca "isim-alanı bankası {...}" nın içindeki her şeye sahipti.

Ad alan adlarından birini değiştirmek sorunu çözdü. Her iki mecliste de birkaç değişiklik yaptım ve hata olmadan yeniden derledim

Her iki meclisin de NUnit ile oynadığım gibi testler içerdiğini unutmayın.


2
2017-07-17 23:01





Ben de bu problemi yaşadım, ama bugün çoğaltacağım. Forumlar, kodunuzun kullandığınız kaynakları geri vermediğinden kaynaklandığını gösteriyor. Bu konuya sahip olduğumda bir Xml okuyucuyu test edeceğinden bir zil çaldı.

İşte bulduğum bir bağlantı var asp.net üzerinde


1
2018-06-01 15:34



İlginç. Test takımım (şikayet ettiği kişi) ve test etmesi gereken ayrı bir meclis var. Kaynak sorunu test meclisinde mi olacak? Ya da muhtemelen test meclisinin ana mecliste erişmekte olduğu bir şey bir kaynağa izin vermiyor. Hmm ... - Chris
Seni vahşi kaz kovalamacasına göndermek istemiyorum, ama rahatsız edici kodun test meclisi yerine test ettiğin mecliste olacağını düşünürdüm. Özellikle System.IO kullanan şeylere bakın, oldukça tardy görünüyorlar. - Mark Dickinson
Seni duyuyorum. İlginç olan şey, NUnit projesini sıfırdan yükleyebilmem ve tek bir test yapmadan (yani kodumu henüz yüklemediğim anlamına geliyordu), derhal IDE'yi derlemeden engelliyor. Yine de bazı şeyleri kontrol edeceğim, teşekkürler! - Chris
Endişelenme, iyi şanslar. - Mark Dickinson


Ben bu sorunu vardı ve etrafında okuma ve deney bir çok sonra ben suçlu NUnit ya da benim kodunda şey aslında olmadığını fark etti. Ben, düzgün tüm bu kaynaklarını serbest bırakmak için başarısız oldu FakeItEasy, sahte nesne çerçevesi kullanılarak başka bir kütüphane oldu.

NUnit ile FakeItEasy kullanıyorsanız ve bu sorunla karşılaşırsanız, başka bir sahte nesne çerçevesine geçmeyi düşünün. FakeItEasy'yi kullanmıyorsanız veya projenizden kaldırmanız bu sorunu çözmezse, test kodundan kullandığınız tüm 3. taraf kitaplıklarının envanterini alın ve bunlardan herhangi birinin benzer bir şey yapıp yapmadığını düşünün.

Alternatif olarak, NUnit'in yaratıcısını yüklediği herhangi bir test derlemesi tarafından tutulan herhangi bir kaynağı açıkça serbest bırakmak için uğraşırsınız, ya da B'den çok daha proaktif olursanız, açık kaynak kodlu bir projenin avantajından faydalanın ve çözüm üreten bu.


1
2018-06-05 20:04