2017-01-19 3 views
6

Ich arbeite an einer Service Fabric-Anwendung, die eine Reihe von zustandslosen Diensten und einen einzigen Stateful-Service enthält. Wenn ich das erste Mal veröffentliche, ist alles in Ordnung und es wird in meinem lokalen Cluster bereitgestellt. wenn ich nach diesem, versuchen, die App zu verpacken oder zu veröffentlichen, ohne explizit es zunächst zu stoppen, erhalte ich folgende Fehlermeldung:Warum sperrt mein Service Fabric-Code seine eigenen PDBs?

CSC : error CS2012: Cannot open 'C:...\ProjectFolder\obj\x64\Debug\ProjectName.pdb' for writing -- 'The process cannot access the file 'C:...\ProjectFolder\obj\x64\Debug\ProjectName.pdb' because it is being used by another process.'

Nach process explorer wird die PDB gesperrt durch meine eigenen ProjectName.exe. Dies ist der einzelne Statusdienst in meiner Anwendung.

  1. Warum sollte meine Exe ihre eigenen PDBs sperren? Ich könnte verstehen, wenn es Visual Studio ist.
  2. Ich sehe nichts in meinem eigenen Code, der das verursachen sollte, also nehme ich an, dass es etwas im Fabric-Code ist, den ich rufe.
  3. Die PDBs werden mit der Anwendung bereitgestellt, aber es sind die Dateien im ursprünglichen Quellverzeichnis, die gesperrt sind - warum nicht die PDBs neben dem laufenden Code?
  4. Warum sehe ich nur diesen Fehler in Bezug auf den Stateful-Service und nicht die statuslosen Services?
  5. Ich vermute, dass dies etwas mit dem Stateful Service zu tun hat, der beim Start viele Fehler generiert, die Fabric möglicherweise Symbole richtig anzeigen müssen.
  6. Wie kann ich verhindern, dass es passiert - entweder mit den richtigen PDBs oder überhaupt nicht, es sei denn ich bin über Visual Studio Debuggen?

Bearbeiten: ausgelöst am github. Aktuelle workaround hierfür:

A current workaround at this point in time would be to restrict the Network Service access to the pdb in the build folder (obj\x64\Debug).

+0

Es ist der Stateful Service asp.net Kern? Haben Sie Klassenbibliotheksprojekte in Ihrer Lösung? –

+0

Ich habe jeden asp.net-Kern oder .net-Kern vermieden. Ich hatte zu viele Probleme, die Plattform und Konfiguration für sie mit Stoff zu bekommen. Die direkten Abstufungen von Fabric sind nur 64-Bit-Dienste. Ein oder zwei davon, einschließlich des Stateful-Service, verweisen auf eine Klassenbibliothek in der Lösung, die in einer beliebigen CPU erstellt wurde. Kann das zu Problemen führen? – Andyrooger

+0

Ich habe ein Problem festgestellt, bei dem dies passiert, nachdem die Build-Konfiguration der Klassenbibliothek geändert wurde. In diesem Fall wird es durch einen sekundären Build aufgelöst. Bist du im Build fest oder kannst du einfach einen anderen Build machen und es ist gut? –

Antwort

0

Basierend auf dem issue, die ausgelöst wurde, sieht es so festgelegt ist jetzt.

"Going to close the issue as we believe both issues have now been addressed by the 5.6 runtime and the 1.6 tooling."

Scheint Upgrade ist jetzt die Antwort auf Punkt 4. Wenn jemand 1-3 beantworten kann ich sehr glücklich sein würde, die großen grünen Häkchen zu bewegen.

Verwandte Themen