在MSBuild里使用编译选项

概述

编译选项可以在使用MSBuild的项目里通过MSBuild属性指定。

例子

  1. <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
  2. <TypeScriptRemoveComments>false</TypeScriptRemoveComments>
  3. <TypeScriptSourceMap>true</TypeScriptSourceMap>
  4. </PropertyGroup>
  5. <PropertyGroup Condition="'$(Configuration)' == 'Release'">
  6. <TypeScriptRemoveComments>true</TypeScriptRemoveComments>
  7. <TypeScriptSourceMap>false</TypeScriptSourceMap>
  8. </PropertyGroup>
  9. <Import
  10. Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets"
  11. Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />

映射

编译选项MSBuild属性名称可用值
—allowJs MSBuild不支持此选项
—allowSyntheticDefaultImports TypeScriptAllowSyntheticDefaultImports布尔值
—allowUnreachableCode TypeScriptAllowUnreachableCode布尔值
—allowUnusedLabels TypeScriptAllowUnusedLabels布尔值
—alwaysStrict TypeScriptAlwaysStrict布尔值
—baseUrl TypeScriptBaseUrl文件路径
—charset TypeScriptCharset
—declaration TypeScriptGeneratesDeclarations布尔值
—declarationDir TypeScriptDeclarationDir文件路径
—diagnostics MSBuild不支持此选项
—disableSizeLimit MSBuild不支持此选项
—emitBOM TypeScriptEmitBOM布尔值
—emitDecoratorMetadata TypeScriptEmitDecoratorMetadata布尔值
—experimentalAsyncFunctions TypeScriptExperimentalAsyncFunctions布尔值
—experimentalDecorators TypeScriptExperimentalDecorators布尔值
—forceConsistentCasingInFileNames TypeScriptForceConsistentCasingInFileNames布尔值
—help MSBuild不支持此选项
—importHelpers TypeScriptImportHelpers布尔值
—inlineSourceMap TypeScriptInlineSourceMap布尔值
—inlineSources TypeScriptInlineSources布尔值
—init MSBuild不支持此选项
—isolatedModules TypeScriptIsolatedModules布尔值
—jsx TypeScriptJSXEmit ReactPreserve
—jsxFactory TypeScriptJSXFactory有效的名字
—lib TypeScriptLib逗号分隔的字符串列表
—listEmittedFiles MSBuild不支持此选项
—listFiles MSBuild不支持此选项
—locale automatic自动设置为PreferredUILang值
—mapRoot TypeScriptMapRoot文件路径
—maxNodeModuleJsDepth MSBuild不支持此选项
—module TypeScriptModuleKind AMDCommonJsUMDSystemES6
—moduleResolution TypeScriptModuleResolution ClassicNode
—newLine TypeScriptNewLine CRLFLF
—noEmit MSBuild不支持此选项
—noEmitHelpers TypeScriptNoEmitHelpers布尔值
—noEmitOnError TypeScriptNoEmitOnError布尔值
—noFallthroughCasesInSwitch TypeScriptNoFallthroughCasesInSwitch布尔值
—noImplicitAny TypeScriptNoImplicitAny布尔值
—noImplicitReturns TypeScriptNoImplicitReturns布尔值
—noImplicitThis TypeScriptNoImplicitThis布尔值
—noImplicitUseStrict TypeScriptNoImplicitUseStrict布尔值
—noStrictGenericChecks TypeScriptNoStrictGenericChecks布尔值
—noUnusedLocals TypeScriptNoUnusedLocals布尔值
—noUnusedParameters TypeScriptNoUnusedParameters布尔值
—noLib TypeScriptNoLib布尔值
—noResolve TypeScriptNoResolve布尔值
—out TypeScriptOutFile文件路径
—outDir TypeScriptOutDir文件路径
—outFile TypeScriptOutFile文件路径
—paths MSBuild不支持此选项
—preserveConstEnums TypeScriptPreserveConstEnums布尔值
—preserveSymlinks TypeScriptPreserveSymlinks布尔值
—listEmittedFiles MSBuild不支持此选项
—pretty MSBuild不支持此选项
—reactNamespace TypeScriptReactNamespace字符串
—removeComments TypeScriptRemoveComments布尔值
—rootDir TypeScriptRootDir文件路径
—rootDirs MSBuild不支持此选项
—skipLibCheck TypeScriptSkipLibCheck布尔值
—skipDefaultLibCheck TypeScriptSkipDefaultLibCheck布尔值
—sourceMap TypeScriptSourceMap文件路径
—sourceRoot TypeScriptSourceRoot文件路径
—strict TypeScriptStrict布尔值
—strictFunctionTypes TypeScriptStrictFunctionTypes布尔值
—strictPropertyInitialization TypeScriptStrictPropertyInitialization布尔值
—strictNullChecks TypeScriptStrictNullChecks布尔值
—stripInternal TypeScriptStripInternal布尔值
—suppressExcessPropertyErrors TypeScriptSuppressExcessPropertyErrors布尔值
—suppressImplicitAnyIndexErrors TypeScriptSuppressImplicitAnyIndexErrors布尔值
—target TypeScriptTarget ES3ES5,或 ES6
—traceResolution MSBuild不支持此选项
—types MSBuild不支持此选项
—typeRoots MSBuild不支持此选项
—watch MSBuild不支持此选项
MSBuild only optionTypeScriptAdditionalFlags任何编译选项

我使用的Visual Studio版本里支持哪些选项?

查找 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets 文件。 可用的MSBuild XML标签与相应的 tsc编译选项的映射都在那里。

ToolsVersion

工程文件里的 <TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>属性值表明了构建时使用的编译器的版本号(这个例子里是1.7)这样就允许一个工程在不同的机器上使用相同版本的编译器进行构建。

如果没有指定 TypeScriptToolsVersion,则会使用机器上安装的最新版本的编译器去构建。

如果用户使用的是更新版本的TypeScript,则会在首次加载工程的时候看到一个提示升级工程的对话框。

TypeScriptCompileBlocked

如果你使用其它的构建工具(比如,gulp, grunt等等)并且使用VS做为开发和调试工具,那么在工程里设置 <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>。 这样VS只会提供给你编辑的功能,而不会在你按F5的时候去构建。