2012-10-07 14 views

Respuesta

19

Deberá apuntar a ECMAScript v5, es decir, pasar el argumento -target ES5 al compilador. Esto debe establecerse en la configuración de destino de los archivos del proyecto.

No sé si VS tiene algún mecanismo incorporado para editar configuraciones de destino, así que solo puedo decirte cómo hacerlo manualmente. Simplemente abra su archivo de proyecto .csproj, busque el nodo Target donde se encuentra el comando del compilador de TypeScript y agregue el argumento -target ES5.

En mi config que se parece a esto:

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

actualización

partir de la versión 0.8.1.0, se retiró la versión codificada de dependencia y se añadió soporte para mapas fuente, por lo que el Target nodo ahora se ve así de forma predeterminada:

<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> 

la inyección de la argu target ción sigue siendo bastante fácil, simplemente ponerlo después 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

Muchas gracias ... es que funciona como un encanto ...^_^y – DexDude

+1

De nada :) Tenga en cuenta que se recomienda para marcar respuestas que resuelven el problema de que se trate como se acepta (la pequeña marca de verificación al lado), no solo se trata de reputación, sino que también ayuda a otros a elegir la información correcta (suponiendo que haya más respuestas), es un indicador para otros encuestados y encuestados de que la pregunta está resuelta, y otros será más motivado para responder sus preguntas cuando vean que no será en vano. – ndm

+0

mi objetivo BeforeBuild tiene una línea Exec Command = tsc $ (TypeScriptSourceMap) @ ... en lugar de " $ (PROGRAMFILES) ... una que mencionas. ¿Instalé algo incorrectamente? ¿Sabes dónde colocar el objetivo ES5 con ese estilo de Comando Exec? – GaryB96

9

A partir de 0.8.2 ha tenido otro cambio. Algunas de las cosas comunes de compilación de TypeScript se movieron de su .csproj a un archivo de compilación externo. De este modo:

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

Su .csproj todavía se pone a establecer algunos argumentos sobre la acumulación mecanografiado mediante su inclusión como elementos de la construcción. uno de esos elementos es la versión ES. La plantilla creado dos grupos para mí, uno para depurar y uno para la liberación:

<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> 

para el efecto deseado simplemente cambiar la ES3 a ES5

Para una comprensión más profunda de cómo esto finalmente termina como parte de la llame al compilador de TypeScript eche un vistazo al archivo Microsoft.TypeScript.targets.

Buena suerte,

+0

después de editar el TypeScriptTarget en ES5 me sale el error: '" tsc.exe "salió con el código 1.' ¿Alguna idea? – daniel

Cuestiones relacionadas