2012-10-02 16 views
13

Quando aggiungo un nuovo file TypeScript alla mia soluzione, il sistema mi fornisce in modo carino un file .ts precompilato con il file .js appena sotto. Questa configurazione mi fa pensare che la conversione da TypeScript a JavaScript sia automatica. Questa ipotesi è rafforzata dal fatto che il file .ts ha un'azione di compilazione 'TypeScriptCompile'. Tuttavia, indipendentemente da ciò che faccio (salvare una ts modificata, compilare il progetto ...), non succede nulla.L'azione di compilazione TypeScriptCompile non sembra fare nulla

So che posso aggiungere passi pre-compilazione al progetto, ma mi piacerebbe molto che l'azione di compilazione TypeScriptCompile si avvii automaticamente in modo che sia sufficiente salvare il file per il file .js da rigenerare. Cosa devo fare per far sì che 'TypeScriptCompile' non funzioni come previsto/desiderato?

+0

Che evento di build si ou ha attualmente? – Fenton

+0

Ho anche avuto lo stesso problema auto-compilando i miei sorgenti in javascript. Ho scritto una piccola app che si occupa di questo per voi: http://onthefly.codeplex.com/ - Basta fare clic su un pulsante ogni volta che si desidera compilare ed è fatto. – Arrow

risposta

9

Ho avuto lo stesso problema durante il tentativo di utilizzare TypeScript in un progetto MVC4, ma ho risolto il problema!

Inserisci le seguenti righe nel file di progetto utilizzando il tuo editor di testo preferito. C'è una sezione commentata BeforeBuild di solito già presente alla fine del file proj, che è possibile sostituire con queste righe. Ricarica il progetto e sei a posto. I file .js verranno generati durante la compilazione.

<Target Name="BeforeBuild"> 
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc&quot; @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
</Target> 

avere una buona occhiata al percorso esatto, però, potrebbe essere diverso (ad esempio, se si dispone di una versione diversa del dattiloscritto SDK). Allo stesso modo, se tsc.exe è già nella variabile di ambiente PATH, è possibile utilizzare un comando versione-agnostic:

<Target Name="BeforeBuild"> 
    <Exec Command="&quot;tsc&quot; @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
</Target> 

Infine, come notato nei commenti, si potrebbe desiderare di aggiungere -c per preservare commenti alla riga di comando . Ciò consente agli strumenti come cassette & il raggruppamento delle risorse di asp.net per recuperare i riferimenti e rendere le cose nell'ordine corretto.

+2

Probabilmente vorrai aggiungere -c per conservare i commenti sulla riga di comando. Ciò consente agli strumenti come il bundle delle risorse di cassette e asp.net di recuperare i riferimenti e rendere le cose nell'ordine corretto – eoleary

+0

Non riesco a farlo funzionare, cos'è TypeScriptCompile, si suppone che sia un nome file? (leggendo il comando tsc), l'unico modo per farlo funzionare è se aggiungo esplicitamente il nome del mio file app.ts – joeriks

+0

Dal titolo della domanda, sembra che TypeScriptCompile sia un'azione di compilazione. –

1

Alcune persone hanno avuto questo problema, incluso me stesso. La correzione è manually install the typescript visual studio extension.

L'installatore è qui:

"C: \ Program Files (x86) \ Microsoft SDK \ dattiloscritto \ 0.8.0.0 \ TypeScriptLanguageService.vsix"

o qui su macchine x86 :

"C: \ Program Files \ Microsoft SDK \ dattiloscritto \ 0.8.0.0 \ TypeScriptLanguageService.vsix"

0

Ok, ho reinstallato tutto, incluso il file vsix. Apparentemente quando "eseguo" il mio progetto ora, il file .ts viene automaticamente convertito in un file .js (senza azioni di compilazione personalizzate). Va bene per ora. Sarebbe stato meglio se questi file seguissero altri generatori di codice in quanto vengono compilati quando il file sorgente viene salvato. Scriverò la mia implementazione SingleFileGenerator ma non so ancora come chiamare .js da C#.

+0

Ma non è quello che volevi -> ti sei lamentato del fatto che "Quando imposto Build Action per compilare e fare una build, non viene compilato" .. Quindi lo hai risolto, quindi ora stai dicendo quando lo costruisci Viene compilato, ma ora ti lamenti che "quando SALVO il file non viene compilato" .. Sì, perché è "Build" che causa la compilazione, non "Salva"?! –

1

Se si verificano ancora problemi compiling typescript files, è possibile controllare un'app che ho appena rilasciato. Puoi compilare i file con un solo clic di un pulsante.

+0

Grazie per questo, ho regolato per elaborare le directory in modo ricorsivo e attendere il completamento del processo tsc.exe prima di avviare il successivo. – Jesse

0

Se si utilizza Visual Studio 2013 con l'ultimo TypeScript 1.5, potrebbe essere necessario installare TypeScript tools for Visual Studio.Mi raccomando inoltre di installare Web Essentials che invocherà la compilazione del file di script .ts su save (oltre a molte altre utili funzionalità).

Quindi seguire i passaggi che Visual Studio realizza per nuovi progetti Web nel file .csproj.

1) proprietà Importa MSBuild tipografico aggiungendo seguente elemento sotto root Project elemento:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" /> 

target 2) Importa MSBuild tipografico accumulo

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" /> 

3) Configurare versione target tipografico sotto Project/PropertyGroup elemento

<TypeScriptToolsVersion>1.5</TypeScriptToolsVersion>