2009-07-10 29 views
12

sto ottenendo il seguente errore quando si compila il mio progetto:Task non è riuscita perché Al.exe non è stato trovato,

attività non riuscita perché "Al.exe" non è stato trovato, o il corretto Microsoft Windows SDK è non installato. L'attività cerca "AL.exe" nella sottodirectory "bin" sotto la posizione specificata nel valore InstallationFolder della chiave di registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A. Potresti riuscire a risolvere il problema effettuando una delle seguenti operazioni:

  1. Installare Microsoft Windows SDK per Windows Server 2008 e .NET Framework 3.5.
  2. Installare Visual Studio 2008.
  3. Impostare manualmente la chiave di registro sopra nella posizione corretta.
  4. Passare la posizione corretta nel parametro "ToolPath" dell'attività.

Questo errore viene quando sto aggiungendo file di risorse alla mia cartella nel mio progetto unittest. Questi file di risorse non sono direttamente utilizzati dal mio programma per la localizzazione, sono proprio come normali file. Ho bisogno di queste unità per testare alcune logiche all'interno del mio programma che carica questi file di risorse usando lo ResXResourceReader.

Qualcuno mi può spiegare perché questo errore si ??

Edit: Installare Windows SDK ha risolto il problema, come descritto anche nell'errore. Ma mi piacerebbe ancora sapere perché l'errore è apparso. Non ha senso per me.

+0

Ho lo stesso problema. Non riesco a installare Microsoft Windows SDK a causa della politica aziendale e nemmeno a farlo perché ho un'applicazione Web (ASP.NET, C#, MVC Framework, i18n) e non l'applicazione Windows. Inoltre non ho accesso a modificare la chiave di registro. – meir

risposta

5

Scaricare il progetto e quindi modificare il file tuoi Csproj si vedrà un task di importazione

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 

MSBuildBinPath = "C: \ WINDOWS \ Microsoft.NET Framework \ v3.5 \" se ur progetto è destinati a .Net 3.5

poi andare a

C: \ WINDOWS \ Microsoft.NET Framework \ v3.5 \ \ Microsoft.CSharp.targets il file

aprire il file in Blocco note e la ricerca di compito AL e si otterrà qualcosa di simile

<AL AlgorithmId="$(Satellite_AlgorithmId)" 
      BaseAddress="$(Satellite_BaseAddress)" 
      CompanyName="$(Satellite_CompanyName)" 
      Configuration="$(Satellite_Configuration)" 
      Copyright="$(Satellite_Copyright)" 
      Culture="%(Culture)" 
      DelaySign="$(DelaySign)" 
      Description="$(Satellite_Description)" 
      EmbedResources="@(_SatelliteAssemblyResourceInputs)" 
      EvidenceFile="$(Satellite_EvidenceFile)" 
      FileVersion="$(Satellite_FileVersion)" 
      Flags="$(Satellite_Flags)" 
      GenerateFullPaths="$(Satellite_GenerateFullPaths)" 
      KeyContainer="$(KeyContainerName)" 
      KeyFile="$(KeyOriginatorFile)" 
      LinkResources="@(Satellite_LinkResource)" 
      MainEntryPoint="$(Satellite_MainEntryPoint)" 
      OutputAssembly="$(IntermediateOutputPath)%(Culture)\$(TargetName).resources.dll" 
      Platform="$(PlatformTarget)" 
      ProductName="$(Satellite_ProductName)" 
      ProductVersion="$(Satellite_ProductVersion)" 
      ResponseFiles="@(AlResponseFile)" 
      SourceModules="@(Satellite_SourceModule)" 
      TargetType="$(Satellite_TargetType)" 
      TemplateFile="$(IntermediateOutputPath)$(TargetName)$(TargetExt)" 
      Title="$(Satellite_Title)" 
      ****ToolPath="C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"**** 
      Trademark="$(Satellite_Trademark)" 
      Version="$(Satellite_Version)" 
      Win32Icon="$(Satellite_Win32Icon)" 
      Win32Resource="$(Satellite_Win32Resource)"> 

      <Output TaskParameter="OutputAssembly" ItemName="FileWrites"/> 

     </AL> 

Nota che ho chnaged il percorso utensile nella posizione in cui AL esiste sulla mia macchina.

Di default usa $ (AlToolPath), Non so che cosa è il valore di questa proprietà, ma sono sicuro che se hai trovato questo errore che non punta a correggere posizione

Quindi, in parole semplici compito AL può trovare AL.exe e quando lo si modifica e lo si fornisce valore ToolPath lo si aiuta a individuarlo.

Spero che questo si spiega il motivo per cui si stanno ottenendo questo messaggio di errore.

+0

Vorrei solo aggiungere che il percorso in cui non è stato trovato AL.exe è scritto nell'output del compilatore VS. Quindi è facile vedere dove non è stato trovato AL.exe. È possibile modificare le configurazioni o semplicemente copiare AL.exe da qualche parte in questa posizione del percorso. Ovviamente non è molto bello dal punto di vista delle best practice, ma è più veloce e non è necessario modificare la configurazione. – agira

15

State ottenendo questo errore perché si sta creando un progetto 3.5 che utilizza un assembly manifesto, ma non si dispone degli strumenti 3,5 installati. (Si spera che qualcuno possa fornire ulteriori informazioni.)

vi consiglio vivamente di installare Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 e evitare l'hack, soprattutto quando hai solo bisogno di installare gli strumenti, ed essere sicuri di controllare le note di rilascio per informazioni Al.exe. (Questo SDK è l'installazione consigliata per 3.5 a causa di una correzione degli aggiornamenti di sicurezza.)

Le "Note di rilascio" per SDK indicano che ALTOOLPATH è impostato da Visual Studio 2005, il che potrebbe spiegare perché alcuni utenti hanno problemi nella creazione. Questa è una supposizione da parte mia.

Utilizzando Process Monitor di SysInternals, quando si crea un progetto 3.5, Visual Studio 2008 si trova nella cartella% SystemRoot% \ Microsoft.NET \ Framework \ v3.5 per Assembly Linker (AL.exe). Non riuscendo a trovare AL lì, utilizzerà la posizione specificata nell'impostazione specifica del registro v6.0A. (Nota che v6.0A non è per .NET 3.5.) Pertanto, installa il software corretto e non hackerare. : O)

La domanda che ho è il linker di Assembly diverso tra 2.0, 3.0 e 3.5?


di Windows SDK per Windows Server 2008 e .NET Framework 3.5

Installazione del recente rilasciato Microsoft Windows SDK per Windows 7 e .NET Framework 3.5 SP1, invece di questa versione è consigliato. Se esegui e installa questo SDK dopo VS2008 SP1, assicurati che la patch descritta nella Knowledge Base 974479 sia applicata a . Vedere la sezione Panoramica per ulteriori informazioni su .

4

Non è necessario installare VS2010 sui server costruire.

Esportare la chiave "v7.0A" dalla propria casella di sviluppo, importarla nel registro del build server. Assicurati di rinominare qualsiasi "Program Files (x86)" in "Programmi" a seconda della versione dei server Windows in esecuzione.

+0

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDK \ Windows \ v7.0A: questa è la chiave del Registro di sistema, la mia non funziona ancora, ma tutto punta a questa chiave –

2

Ho fatto lo stesso come dcadenas e ho appena copiato la cartella SDK \ 7.0A da una macchina di sviluppo ed ho esportato le impostazioni del registro v7.0A da una scatola di sviluppo al server di build. Questo ha funzionato alla grande in quanto non ho quindi dovuto installare VS 2010 sul server di build. Grazie.

2

Ho avuto lo stesso errore, che è venuto da aggiungere file di risorse in una cartella locale e cambiando l'azione di costruzione di "risorse incorporate" (risorse -> Proprietà), mentre la modifica delle risorse di localizzazione per MVC3 da webforms see MVC2 Globalization . L'errore esatto è causato da Resources.lang.resx che contiene un "." nel nome (combinato con "risorse incorporate").

In precedenza, l'applicazione compilava e funzionava correttamente mentre utilizzava risorse globali con un'azione di costruzione di "Contenuto" (App_GlobalResources).

La soluzione è stata simile a @vicky Kole s' sopra ma ho pensato è comunque degno di nota a causa alcune differenze e la causa esatta dell'errore Al.exe in un progetto precedentemente funzionante.

Dopo aver risolto il problema, ho installato il file Windows 7 & ASP.NET 4 SDK e localizzato al.exe nella cartella C: \ Programmi \ Microsoft SDK \ Windows \ v7.1 \ Bin \ x64 con una ricerca.

Ho poi cercato la C: \ WINDOWS \ Microsoft.NET \ Framework \ * NUOVA VERSIONE * \ * obiettivi fino a quando ho trovato lo stesso nodo AL come @vicky sopra Kole.. Era in un file diverso chiamato Microsoft.Common.targets. Ho preso il percorso dal nuovo SDK C: \ Programmi \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ x64 nel mio caso e l'ho inserito nel ToolPath come fatto da vicky e riavviato Visual Studio.

<AL AlgorithmId="$(Satellite_AlgorithmId)" 
ToolPath="C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64" 

(questo potrebbe essere un commento al suo posto in quanto è molto simile alla sua situazione)

1

ho avuto un errore simile di ottenere un progetto di costruzione in Windows 10 in cui non è stato trovato uno strumento resgen.exe. Ho dovuto cambiare una chiave InstallationFolder Registro di sistema in HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFX35Tools-x86 ad un percorso dove effettivamente esisteva sul mio computer: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools

0

il problema risolto dopo aver re-installare il Visual Studio

Problemi correlati