我有一个带有一些打字稿的项目。有时,打字稿不能正确构建;它使用了错误的模块系统,将导出的成员分配给某个导出对象,而不是使用require.js'define
。
为了让它重新构建,我轻摇了项目设置的TS构建选项卡,并推出了正确的构建。
导致这种情况的原因是什么?我的猜测是csproj
文件控制了构建,但我不确切知道如何。
我的csproj
中的打字稿相关条目是
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptJSXEmit>None</TypeScriptJSXEmit>
<TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
<TypeScriptNoImplicitAny>True</TypeScriptNoImplicitAny>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
<TypeScriptRemoveComments>False</TypeScriptRemoveComments>
<TypeScriptOutFile />
<TypeScriptOutDir />
<TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
<TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
<TypeScriptSourceMap>True</TypeScriptSourceMap>
<TypeScriptMapRoot />
<TypeScriptSourceRoot />
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />
如何以另一种方式控制ts构建,而不是单击设置选项卡中的按钮和复选框,我应该具体改变什么才能让我的构建始终生成AMD风格的模块?
答案 0 :(得分:1)
也许您正在将构建配置更改为发布模式,而不是为此设置的调试模式?或者你有其他工具试图编译你的TypeScript,并且没有遵循Visual Studio的项目文件约定,而是默认为标准设置?
我很想尝试将您的配置移动到tsconfig.json文件中,并将其从Visual Studio项目设置中删除。这应该使它非常明确(使用.json它将始终设置,无论你的构建设置如何,并且任何编译TS的工具都会理解它),并且作为一个好的副作用使它也独立于Visual Studio。 / p>
https://www.typescriptlang.org/docs/handbook/tsconfig.json.html有关于格式的指南。我希望它可能只是采用上面的现有设置并直接将它们转录为JSON。
要获得您正在寻找的特定AMD模块行为,您只需确保将'module': 'amd'
包含在JSON的compilerOptions
对象中。