deployment - enum - ¿Cómo incluir archivos de TypeScript al publicar?
enum typescript angular (3)
Tengo una aplicación web MVC 5.1 donde recientemente comencé a usar TypeScript. Quiero usar sourcemapping, por lo que he incluido los archivos .ts, .js y .js.map en el proyecto.
Cuando publico la aplicación (por ejemplo, para el sistema de archivos o Azure), solo se copian los archivos .js y .js.min, no el archivo .ts. Esto significa que no obtengo la asignación de origen en el sitio publicado.
El archivo TypeScript tiene "Build Action": "TypeScriptCompile", y he probado "Copiar en el directorio de salida" tanto con "No copiar" como "Copiar siempre", aún no se ha publicado el archivo.
¿Cómo puedo incluir los archivos .ts cuando publico mi aplicación?
(Estoy usando VS2013 Update 2 con TypeScript 1.0.1 y Web Essentials 2013 para Update 2)
Basándome en la respuesta de Stas Berkov, incluyo condicionalmente los archivos .ts
solo cuando se generan los mapas de origen (según lo configurado en la pestaña TypeScript Build
de las propiedades del proyecto).
<Target Name="AddTsToContent" AfterTargets="CompileTypeScript" Condition="''$(BuildingProject)'' != ''false''">
<ItemGroup>
<Content Include="@(TypeScriptCompile)" Condition="''$(TypeScriptSourceMap)'' == ''true''"/>
</ItemGroup>
</Target>
.csproj
esto como el último elemento en <Project>
del archivo .csproj
.
Logré esto editando el archivo del proyecto (csproj). Incluí archivos .ts (se almacenan en el elemento TypeScriptCompile ) en el elemento Content , es decir,
<Target Name="AddTsToContent" AfterTargets="CompileTypeScript" Condition="''$(BuildingProject)'' != ''false''">
<ItemGroup>
<Content Include="@(TypeScriptCompile)" Condition="''$(Configuration)''==''Debug''"/>
</ItemGroup>
</Target>
Nota: debido a la condición, esto incluye el contenido de TypeScript solo para la configuración de compilación de Debug
.
Primero, puedes echar un vistazo a tu directorio publicado para ver si los archivos están allí. Puedes reproducir esto localmente con MSBuild:
msbuild path/to/your/solution.sln-or-project.csproj /p:OutputPath=path/to/outputFolder /p:Configuration=Release
Después de ejecutar este comando, puede buscar sus archivos .ts en la carpeta:
outputFolder/_bin/PublishedWebsites/YourProjectName/
Todas las salidas de un proyecto se copian en el directorio de salida durante la ejecución de la tarea de MSBuild " CopyFilesToOutputDirectory ".
Si después de ejecutar el comando MSBuild, sus archivos .ts que están marcados como "Copiar siempre" o "Copiar si es más nuevo" todavía no se están copiando, es probable que su archivo de proyecto no importe el archivo de objetivos comunes proporcionado por Microsoft, en el que La tarea " CopyFilesToOutputDirectory " está definida.
En cuyo caso, edite su archivo .csproj, agregando una cláusula de importación al archivo apropiado, como se muestra a continuación:
<Import Project="$(VSToolsPath)/WebApplications/Microsoft.WebApplication.targets" Condition="''$(VSToolsPath)'' != ''''" />
Intente ejecutar el comando MSBuild nuevamente después de que se haya importado Microsoft.WebApplication.targets, y los archivos marcados para ser publicados deberían estar ahora en la carpeta de salida.