我有一个项目,里面有一些打字稿。有时,typescript不能正确构建;它使用错误的模块系统,将导出的成员分配给某个导出对象,而不是使用require.js的define。
为了让它重新构建,我摇动项目设置的TS build选项卡,然后正确的构建就出来了。
是什么导致了这种情况?我的猜测是csproj文件控制构建,尽管我不知道具体是如何控制的。
我的csproj中与typescript相关的条目包括
<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样式的模块?
发布于 2016-05-03 18:40:31
也许您正在将构建配置更改为发布模式,而不是为其设置的调试模式?或者你有一些其他的工具试图编译你的TypeScript,而不是遵循Visual Studio的项目文件约定,而是默认使用标准设置?
我很想尝试将您的配置移至tsconfig.json文件中,并将其从您的Visual Studio项目设置中删除。这应该使它非常明确(对于.json,无论您的构建设置如何,它总是被设置的,并且总是可以被任何编译TS的工具理解),并且作为一个很好的副作用,它也使它独立于Visual Studio。
https://www.typescriptlang.org/docs/handbook/tsconfig.json.html有一个关于这种格式的指南。我预计这可能只是将上面的现有设置直接转录成JSON的问题。
要获得您正在寻找的特定AMD模块行为,只需确保在JSON的compilerOptions对象中包含'module': 'amd'即可。
https://stackoverflow.com/questions/37000950
复制相似问题