2012-10-07 12 views

risposta

19

È necessario selezionare ECMAScript v5, ovvero passare l'argomento -target ES5 al compilatore. Questo deve essere impostato nella configurazione di destinazione dei file di progetto.

Non so se VS dispone di meccanismi incorporati per la modifica delle configurazioni di destinazione, quindi posso solo dirti come farlo manualmente. È sufficiente aprire il file di progetto .csproj, cercare il nodo Target in cui si trova il comando del compilatore TypeScript e aggiungere l'argomento -target ES5.

Nel mio config sembra che questo:

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

Aggiornamento

A partire dalla versione 0.8.1.0, la versione hardcoded di dipendenza è stato rimosso ed è stato aggiunto il supporto per le mappe di origine, e così il Target nodo ora assomiglia a questo di default:

<Target Name="BeforeBuild"> 
    <Message Text="Compiling TypeScript files" /> 
    <Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
    <Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
</Target> 

Iniettando il target Argu mento è ancora piuttosto semplice, è sufficiente mettere dopo tsc o $(TypeScriptSourceMap):

<Message Text="Executing tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
<Exec Command="tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
+0

ringrazio molto ... funziona come un fascino ...^_^y – DexDude

+1

Di niente :) Si prega di notare che si consiglia di contrassegnare le risposte che ha risolto il problema in questione come accettato (il piccolo segno di spunta accanto ad esso), non si tratta solo di reputazione, ma aiuta anche gli altri a scegliere le informazioni giuste (supponendo che ci siano più risposte), è un indicatore per altri interlocutori e rispondenti che la domanda è risolta, e altri sarà più incoraggiato a rispondere alle tue domande quando vedranno che non sarà per niente. – ndm

+0

La mia destinazione BeforeBuild ha un comando Exec = tsc $ (TypeScriptSourceMap) @ ... piuttosto che il " $ (PROGRAMFILES) ... quello che hai menzionato. Ho installato qualcosa in modo errato? Sai dove mettere il target ES5 con quello stile di Exec Command? – GaryB96

9

A partire dal 0.8.2 ha avuto un altro cambiamento. Alcuni elementi di compilazione di tipo TypeScript comuni sono stati spostati da .csproj in un file di build esterno. In questo modo:

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

tuo Csproj ottiene ancora per impostare alcuni argomenti sulla costruzione dattiloscritto inserendole come elementi nella build. uno di questi elementi è la versione ES. Il modello ha creato due gruppi per me, uno per il debug e uno per il rilascio:

<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> 
    <TypeScriptTarget>ES3</TypeScriptTarget> 
    <TypeScriptIncludeComments>true</TypeScriptIncludeComments> 
    <TypeScriptSourceMap>true</TypeScriptSourceMap> 
    </PropertyGroup> 
    <PropertyGroup Condition="'$(Configuration)' == 'Release'"> 
    <TypeScriptTarget>ES3</TypeScriptTarget> 
    <TypeScriptIncludeComments>false</TypeScriptIncludeComments> 
    <TypeScriptSourceMap>false</TypeScriptSourceMap> 
    </PropertyGroup> 

per l'effetto desiderato basta cambiare l'ES3 per ES5

per una più profonda comprensione di come questo alla fine finisce come parte del la chiamata al compilatore TypeScript ha un aspetto nel file Microsoft.TypeScript.targets.

Buona fortuna,

+0

dopo aver modificato il TypeScriptTarget in ES5, ho ricevuto l'errore: '" tsc.exe "è uscito con il codice 1.' Qualche idea? – daniel

Problemi correlati