Я использую TypeScript 0.8.3 и пытаюсь получить скомпилировать с сохранением для работы.
У меня есть моя небольшая разница, но она действительно должна работать. Имейте в виду, что он отлично работает, когда я создаю проект, просто не сохраняю:
Очевидно, первое: Инструменты > Параметры > Текстовый редактоp > TypeScript > Проект > Скомпилировать в Сохранить Сохранить в "Автоматически компилировать TypeScript файлы, которые являются частью проекта"
Затем в моем файле .csproj
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
<TypeScriptIncludeComments>true</TypeScriptIncludeComments>
<TypeScriptGeneratesDeclarations>false</TypeScriptGeneratesDeclarations>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
<TypeScriptOutFile>application.js</TypeScriptOutFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
<TypeScriptIncludeComments>false</TypeScriptIncludeComments>
<TypeScriptGeneratesDeclarations>false</TypeScriptGeneratesDeclarations>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
<TypeScriptOutFile>application.js</TypeScriptOutFile>
</PropertyGroup>
<!-- this imports the code below from Microsoft.Typescript.targets -->
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" />
И я изменил Microsoft.TypeScript.targets следующим образом:
<Target Name="CompileTypeScript">
<Message Text="Compiling TypeScript files" />
<Message Text="Creating response file typescriptcompiler.input" />
<WriteLinesToFile
File="typescriptcompiler.input"
Lines=""C:\MyProject\MyProject.Web\Scripts\_references.ts"" <!-- recursively gets individual file paths referenced therein -->
Overwrite="true"
Encoding="Unicode"/>
<Message Text="Executing tsc $(TypeScriptBuildConfigurations) @typescriptcompiler.input" />
<Exec Command="tsc $(TypeScriptBuildConfigurations) @typescriptcompiler.input" />
<Delete Files="typescriptcompiler.input"/>
</Target>
И все же мне все еще нужно ЗАВЕРШИТЬ проект, чтобы сгенерировать мой единственный application.js
. Сохранение одного файла не работает.
Примечание. Мне пришлось изменить Microsoft.Typescript.targets, чтобы обойти ошибку буфера в библиотеке WScript, используемой tsc при попытке скомпилировать слишком много файлов одновременно. В основном обходной путь заключается в том, чтобы записать в файл, а затем передать его компилятору.
Любые идеи, почему он не перекомпилируется при сохранении?
Существует эта строка в Microsoft.Typescript.targets, но, похоже, она ничего не делает, я пытался удалить оба условия, поэтому оно всегда истинно и до сих пор нет компиляции при сохранении. Что это должно делать?
<TypeScriptCompileOnSaveEnabled Condition="'$(TypeScriptEnableCompileOnSave)' != 'false' and '$(TypeScriptOutFile)' == ''">true</TypeScriptCompileOnSaveEnabled>