2015-07-30 9 views
42

Quando si tenta di creare in Visual Studio 2015, manca il seguente file? Questo progetto è stato precedentemente costruito in VS2013.Impossibile compilare Visual Studio 2015 perché non è possibile trovare "Microsoft.Build.Tasks.v14.0.dll"

codice di gravità Descrizione file di progetto Errore linea La fabbrica compito "CodeTaskFactory" Impossibile caricare dal gruppo "C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Build.Tasks. v14.0.dll". Potrebbe non caricare file o assembly 'file: /// C: \ Programmi (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Build.Tasks.v14.0.dll' o una delle sue dipendenze . Il sistema non trova il file specificato.

+0

Provare a rimuovere e aggiungendo i riferimenti di nuovo può aiutare. –

+0

Aggiornamento pacchetti NuGet mi ha aiutato – Timeless

risposta

12

Nel mio caso si è verificato un problema con il pacchetto nuget SFML.NET.

E 'dipeso da componenti obsoleti di Nuget Baseclass.Contrib.Nuget.Output, motivo per cui la compilazione non è riuscita.

Dopo l'aggiornamento manuale a .Net 4.6, eliminato tutto lo staff di nuget dal file di progetto e cancellato i suoi file dal progetto e recuperato tutte le dipendenze versione di Baseclass.Contrib.Nuget.Output è stata modificata e viola!

+12

'Baseclass.Contrib.Nuget.Output' è stata anche la causa dei miei problemi. Semplicemente aggiornando è stato sufficiente risolverlo. –

+0

Lo stesso qui. Il pacchetto appena aggiornato in Nuget e la compilazione andava bene. – GeoffCoope

+0

@Kris McGinnes, aggiungi il tuo commento come risposta e lo inviterò. Ha risolto il mio problema e apparentemente anche GeoffCoope. –

48

Il gruppo è stato rinominato. Cambiare sulla CodeTaskFactory MSBuild Task il parametro AssemblyFile a ... (nel vostro errore non dovrebbe essere un target nome del file in cui risiede questo compito)

AssemblyFile="C:\Program Files (x86)\MSBuild\14.0\Bin\Microsoft.Build.Tasks.Core.dll" 

Le probabilità sono che qualcuno ha cercato di essere intelligente e utilizzare una proprietà MSBuild come questo .. (che non funziona per MSBuild 14, ma farebbe per 12) ...

AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v$(MSBuildToolsVersion).dll" 

Cordiali saluti ... ci sono alcuni altri così come Microsoft.Build.Utilities.v12.0.dll è stato rinominato in Microsoft.Build.Utilities.Core.dll

+3

Ho visto questo errore dopo aver installato un pacchetto tramite Nuget. Per risolvere il problema, ho modificato il file .targets nella cartella del pacchetto come descritto nella risposta di Gary. Volevo solo sottolineare che la posizione che deve essere modificata potrebbe non essere evidente dall'errore, specialmente se la causa è una recente installazione del pacchetto. –

+7

Perchè 'C: \ Programmi (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ CodeAnalysis \ Microsoft.CodeAnalysis.Targets' reference' $ (MSBuildToolsPath) \ Microsoft.Build.Tasks.v12.0.dll' ? Sicuramente questo non funzionerà quando ToolsVersion è 14.0? –

+0

Mi sono imbattuto in questo problema mentre lavoravo su un computer Windows 10 con Visual Studio Community Edition 2015 cercando di eseguire un'attività per il build di Yahoo Yui Compressor. Ho dovuto aggiornare ls.pubignore.wpp.targets per sostituire v $ (MSBuildingToolsVersion) con Core I lasciato $ (MSBuildingToolsPath) all'inizio. – user2197446

4

E ' è stato sufficiente per me per riavviare Vi Studio sual.

Sospetto di aver precedentemente ucciso tutti i miei processi MSBuild.exe facendo qualcos'altro e che non avendo processi MSBuild.exe causa l'errore.

+3

Non ho idea del perché questo è stato downvoted. Il più semplice a volte è il migliore. – liorda

0

Nel mio caso, ho rimosso il file "ls.pubignore.wpp.targets" da root. e ha rimosso l'errore. :)

2

A seguito di risposta di Gary ho parametrizzata in questo modo:

<Choose> 
    <When Condition="'$(MSBuildToolsVersion)'=='14.0'"> 
    <PropertyGroup> 
     <TasksAssemblyName>Microsoft.Build.Tasks.Core</TasksAssemblyName> 
    </PropertyGroup> 
    </When> 
    <Otherwise> 
    <PropertyGroup> 
     <TasksAssemblyName>Microsoft.Build.Tasks.v$(MSBuildToolsVersion)</TasksAssemblyName> 
    </PropertyGroup> 
    </Otherwise> 
</Choose> 
<UsingTask TaskName="SecondsSinceEpoch" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\$(TasksAssemblyName).dll"> 
0

Ho avuto lo stesso problema, nel mio caso Ho aggiornato alcuni dei pacchetti da NuGet gestore di pacchetti in VS2015, quindi cercato di aprire la stessa soluzione su vs2013 in un'altra macchina in cui vs2015 non è stato installato.

L'installazione di Microsoft Build Tools 2015 ha risolto l'errore. Ciò aggiunge Microsoft.Build.Utilities.Core.dll al GAC, che penso sia ciò che lo fa funzionare.

https://www.microsoft.com/en-in/download/details.aspx?id=48159

7

Ciò che mi ha aiutato con Visual Studio 2017 è quello di copiare Microsoft.Build.Tasks.Core.dll e rinominarlo Microsoft.Build.Tasks.v15.0.dll build.tasks.v15.0.dll

+0

Dopo aver riavviato VS questo ha funzionato per me. – redb

+1

Ha funzionato per me. Ma la vera domanda dovrebbe essere: perché dovevo farlo? –

+0

Questo ha funzionato anche per me in VS2017 Professional. –

0

La mia soluzione: la rimozione di due file dal file "* Csproj":

<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> 
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" /> 
Problemi correlati