Używam TypeScript 0.8.3 i próbuję uzyskać compile on save do pracy.Skrypt opis kompilacji do pojedynczego pliku przy zapisie
Mam ustawiony trochę inaczej, ale powinien naprawdę działać. Należy pamiętać, że działa dobrze, gdy buduję projekt, po prostu nie zapisuję:
Oczywiście pierwsza rzecz: Narzędzia> Opcje> Edytor tekstu> TypeScript> Projekt> Kompilacja na Zapisz ustawiony na "Automatycznie kompiluj pliki TypeScript, które są częścią projektu”
Wtedy w moim pliku .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" />
I zmienił Microsoft.TypeScript.targets następująco:
<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>
A jednak nadal muszę ODBUDOWAĆ projekt, aby wygenerować mój pojedynczy application.js
. Zapisanie pojedynczego pliku nie działa.
Uwaga: Musiałem zmienić plik Microsoft.Typescript.targets, aby obejść błąd bufora w bibliotece WScript używanej przez tsc podczas próby skompilowania zbyt wielu plików naraz. Zasadniczo rozwiązaniem jest zapisanie pliku, a następnie przekazanie go do kompilatora.
Jakieś pomysły, dlaczego nie rekompiluje się przy oszczędzaniu?
Istnieje ten wiersz w Microsoft.Typescript.targets, ale wydaje się, że nic nie robi, próbowałem usunąć oba warunek, więc zawsze jest prawdziwy i nie ma jeszcze kompilacji przy zapisie. Co to ma zrobić? :
<TypeScriptCompileOnSaveEnabled Condition="'$(TypeScriptEnableCompileOnSave)' != 'false' and '$(TypeScriptOutFile)' == ''">true</TypeScriptCompileOnSaveEnabled>
WOW. To tylko zdmuchnęło mój umysł bardziej niż wtedy, gdy zdałem sobie sprawę, że odbicie lustrzane 3.14 jest PIE. – parliament
Za to, co jest warte, nie mogłem uzyskać tego działającego, gdy próbowałem czegoś podobnego. Zobacz moje pytanie tutaj: http://stackoverflow.com/questions/18645185/customizing-e-specific-output-files-for-various-typescript-input-files. Otwórz na wszelkie sugestie. –