2015-10-06 13 views
5

Si è verificato un errore di compilazione da quando si utilizza Visual Studio 2015. Durante la creazione in Visual Studio 2015 ciò si verifica raramente. Quando si costruisce in TeamCity ciò accade molto spesso.Errore di compilazione durante la firma con chiave di snodo

[errore in Visual Studio 2015]

  • errore estrazione chiave pubblica dal file 'CompanyName.snk': il processo non può accedere al file 'C: \ Utenti \ nomeutente \ AppData \ Local \ Temp \ tmp2FF6.tmp 'perché è utilizzato da un altro processo. CompanyName.Project.DAL D: \ Projecten \ CompanyName \ Repository \ Source \ Components \ CompanyName.Project.DAL \ VBC

http://i.stack.imgur.com/hKbbe.png

[Errore nel TeamCity]

  • CSC errore CS7027: errore durante la firma dell'output con chiave pubblica dal file 'CompanyName.snk' - Il processo non può accedere al file 'C: \ BuildAgents \ Gamma \ temp \ buildTmp \ tmpD91D.tmp' perché è utilizzato da un altro processo.

http://i.stack.imgur.com/rbgHx.png

+1

Sembra il problema con la build multicore. Hai provato a creare la tua soluzione con una sola istanza di MSBuild (senza/m switch)? Hai provato a diagnosticare il registro di output dettagliato di MSBuild? Hai provato a determinare quale processo possiede il file temporaneo? – stukselbax

+0

Ho iniziato a vedere questo problema sul nostro server di build Jenkins nell'ultima settimana! Io uso 4 core (/ m: 4) durante la costruzione. Sembra che accada a caso e con progetti diversi ogni volta. Non ho mai avuto l'errore localmente. Solo dal server di build. – llykke

risposta

4

provare a pulire la cartella Temp che viene utilizzato dal build. Ho visto diversi tipi di problemi quando la cartella temporanea contiene molti file.

Alcuni degli strumenti utilizzano GetTempFileName e avranno gli errori quando la temperatura ha un sacco di file

Il metodo GetTempFileName solleverà un'IOException se viene utilizzato per creare più di 65535 file senza cancellare precedenti dei file temporanei .

+0

La quantità di file nelle cartelle temporanee dell'agente è limitata. Questa è la cartella temporanea a cui ti riferisci? –

+0

Era esattamente questo. La cartella temporanea per l'utente che esegue la generazione ('C: \ Users \ USERNAME \ AppData \ Local \ Temp') aveva più di 65535 file. –

0

Ha iniziato per me quando ho spostato il Resharper Cache in System Temp. Quando l'ho spostato nuovamente nella cartella della soluzione, il problema è andato via e potrei ricostruire di nuovo.

0

Ho appena avuto lo stesso problema. In Visual Studio 2015, ho riparato utilizzando le seguenti operazioni:

  1. Vai a Strumenti> Opzioni
  2. Dalla finestra di dialogo Opzioni, selezionare "Progetti e soluzioni> Build and Run"
  3. Impostare il "numero massimo di progetto parallelo costruisce" per 1

+1 per @stukselbax per me ottenere sulla strada giusta Also got help from this link

3

so che è stato un whil E poiché questo è stato chiesto ma come io uso SO per il mio riferimento e ho avuto anche questo problema ho voluto condividere la mia soluzione.

. I file SSK sono per la firma di un progetto. Potrebbe essere necessario crearne uno nuovo.

  • Fare clic con il pulsante destro del mouse sul progetto, selezionare Proprietà.
  • Fare clic su Firma.
  • Fare clic sulla casella accanto a "Firma l'assemblaggio".
  • Nel menu a discesa "Scegli un file chiave con nome sicuro" fai clic su nuovo.
  • Compilare la finestra di dialogo come si desidera notare in particolare il nome del file chiave. Quando si preme ok, questo genererà un nuovo file .snk.
  • Salvare il progetto e ricostruire.
  • Questo utilizzerà il nuovo .snk nel progetto e risolverà l'errore .

Spero che questo aiuti.

+0

Farò un tentativo, per ora ho appena rimosso la firma sul progetto. Anche risolto come soluzione :-) –

1

Questa è probabilmente un'istanza di this issue con il compilatore di Roslyn. La soluzione sarebbe l'aggiunta di

<UseSharedCompilation>False</UseSharedCompilation> 

sotto qualunque <PropertyGroup> nodo Csproj file.