SQLite.Interop.dll gesperrt nach dem ausführen von Visual Studio 2012, Unit Test Framework-tests

  • Visual Studio 2012
  • SQLite 1.0.82.0 (von nuget)

Ich versuche, mit der "Alle Ausführen" - Befehl im "Test-Explorer"
Der folgende Fehler passiert, nachdem Sie einmal den test ausführen ... danach wird es bauen nicht mehr, bis Sie visual studio neu starten

Hier ist die build-Fehler

Der Prozess kann nicht auf die Datei zugreifen 'SQLite.Interop.dll' denn es ist
wird von einem anderen Prozess verwendet

hier ist der code

using System.Data.SQLite;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Test.Sqlite
{
    [TestClass]
    public class Test_Sqlite_Locking
    {
        [TestMethod]
        public void can_create_table()
        {
            using(var fact = new SQLiteFactory())            
            using (var conn = fact.CreateConnection())
            {
                conn.ConnectionString = "Data Source=:memory:;Version=3;New=True;";
                conn.Open();
                //conn.Close();                
            }

            //SQLiteConnection.ClearAllPools();
            //GC.Collect();
        }
    }
}

Habe ich versucht, die Verbindung zu schließen, ruft ClearAllPools, GC.Sammeln und erstellen der SQLiteConnection direkt (statt der Fabrik) ... immer noch dasselbe Problem

Diese funktioniert, wenn Sie DEBUGGEN, ALLE TESTS ... aber es ist, wenn man nur die tests Ausführen, scheint es sperren, um es bis

  • Können Sie wickeln Sie ein Try Catch um die conn.öffnen und sehen, was die Fehler sind, die Sie versuchen zu halten, dass die Verbindung..? wenn also nach der Verbindung sollte es Entsorgt werden, dass Sie es verpackt in einen mit{}
  • Ich habe das ausprobiert ... aber dieser Fehler ist ein BUILD-Fehler ... nicht ein runtime error ... und es geschieht nur, nachdem Sie "Ausführen" den tests nach, dass es scheint, Visual Studio hat immer noch etwas geöffnet, und die Bibliothek-Datei ist gesperrt
  • die Linie macht es Fehler auf .. ? die using(var Tat = new SQLiteFactory())
  • kann man einfügen, was die config-Abschnitt sieht wie sollte in etwa so Aussehen <configuration> <system.Daten> <DbProviderFactories> <entfernen invariant="System.Daten.SQLite" /> <add name="SQLite Data Provider" invariant="System.Daten.SQLite" Beschreibung=".Net Framework Data Provider for SQLite" type="System.Daten.SQLite.SQLiteFactory, System.Daten.SQLite" /> </DbProviderFactories> </system.Daten>
  • gibt es keine app.config ... hier ist die vollständige Fehlermeldung "Warning 1 Konnte nicht kopieren "D:\Code\Test.Sqlite\Test.Sqlite\x86\SQLite.Interop.dll" zu "bin\Debug\x86\SQLite.Interop.dll". Anfang wiederholen 1 in 1000ms. Der Prozess kann nicht auf die Datei zugreifen 'bin\Debug\x86\SQLite.Interop.dll" weil es wird von einem anderen Prozess verwendet. Test.Sqlite "
  • können Sie das kopieren der DLL ' s manuell und starten Sie den Rechner neu..?
  • es funktioniert 1 mal, nachdem ich visual studio neu starten ... wenn ich versuche ein sauberes, bevor ich Baue, bekomme ich eine ähnliche Fehlermeldung, dass die Datei in Benutzung ist
  • lassen Sie uns weiter, diese Diskussion im chat
  • können GAC-DLL ' s oder festlegen der Eigenschaft auf die DLL zu kopieren Lokalen hier ist ein stackoverflow-link, auf den Sie verweisen können.. stackoverflow.com/questions/9725979/... auch, wie sind Sie nach dem schließen des Programms nach unten, wenn es zu testen..? es wäre schön zu sehen, mehr code..ich bin mir sicher, dass es etwas anderes ...
  • das ist der gesamte code ... es ist ein visual studio-test unit-test-framework-Klassenbibliothek ... meine dlls gesetzt werden, um lokale Kopie
  • Ok, eine Letzte Sache.. ist das 4.0 oder 3.5 framework.. versuchen Sie es auf 3,5 speichern Sie es dann umdrehen und ändern Sie den Projekt-Eigenschaften-Seite Einstellung zurück zu 4.0
  • Ich kann nur empfehlen eine andere Sache, aber Sie müssen ändern Sie den code ein bisschen.. ich werde posten, was ich weiß, funktioniert bei mir, wenn ich eine Verbindung zu SQL Lite

InformationsquelleAutor ObeseCoder | 2012-10-16
Schreibe einen Kommentar