Подтвердить что ты не робот

Как включить TypeScript файлы при публикации?

У меня есть веб-приложение MVC 5.1, в котором я недавно начал использовать TypeScript. Я хочу использовать sourcemapping, поэтому я включил в проект файлы .ts,.js и .js.map.

Когда я публикую приложение (например, файловую систему или Azure), копируются только файлы .js и .js.min, а не .ts файл. Это означает, что я не получаю исходное сопоставление на опубликованном сайте.

В файле TypeScript есть "Build Action": "TypeScriptCompile", и я протестировал "Копировать в каталог вывода" как с "Не копировать", ни "Копировать всегда", но файл .ts не опубликован.

Как я могу включить .ts файлы при публикации моего приложения?

(Я использую VS2013 Update 2 с TypeScript 1.0.1 и Web Essentials 2013 для обновления 2)

4b9b3361

Ответ 1

Я достиг этого, отредактировав файл проекта (csproj). Я включил .ts(они хранятся в элементе TypeScriptCompile) в элемент контента i.e.

  <Target Name="AddTsToContent" AfterTargets="CompileTypeScript" Condition="'$(BuildingProject)' != 'false'">
     <ItemGroup>
        <Content Include="@(TypeScriptCompile)" Condition="'$(Configuration)'=='Debug'"/>
     </ItemGroup>
  </Target>

Примечание. Из-за этого условия он включает содержимое TypeScript только для конфигурации сборки Debug.

Ответ 2

Основываясь на ответе Стаса Беркова, я условно включаю файлы .ts только при создании исходных карт (как указано на вкладке TypeScript Build свойства проекта).

<Target Name="AddTsToContent" AfterTargets="CompileTypeScript" Condition="'$(BuildingProject)' != 'false'">
  <ItemGroup>
    <Content Include="@(TypeScriptCompile)" Condition="'$(TypeScriptSourceMap)' == 'true'"/>
  </ItemGroup>
</Target>

Я поместил это как последний элемент в <Project> файла .csproj.

Ответ 3

Во-первых, вы можете посмотреть свой опубликованный каталог, чтобы узнать, есть ли файлы. Вы можете воспроизвести это локально с помощью MSBuild:

msbuild path/to/your/solution.sln-or-project.csproj /p:OutputPath=path/to/outputFolder /p:Configuration=Release

После запуска этой команды вы можете искать свои файлы .ts в папке:

outputFolder/_bin/PublishedWebsites/YourProjectName/

Все выходы проекта копируются в выходной каталог во время выполнения задачи MSBuild " CopyFilesToOutputDirectory".

Если после запуска команды MSBuild ваши .ts файлы, отмеченные как "Копировать всегда", или "Копировать, если новый" все еще не копируются, скорее всего, ваш файл проекта не импортирует общий файл целей, предоставленный Microsoft, в котором определена задача " CopyFilesToOutputDirectory".

В этом случае отредактируйте файл .csproj, добавив предложение import в соответствующий файл, как показано ниже:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Попробуйте снова запустить команду MSBuild после импортирования файла Microsoft.WebApplication.targets, а файлы, помеченные для публикации, теперь должны находиться в выходной папке.