当前运行VS 2017 15.3.5和Typescript 2.5.2 SDK。如何使TypeScript在构建(常规MSBuild)上进行编译。csproj是新的“ .net核心样式”,项目类型是类库。
在这里看到两个好的答案之前,这是我尝试的方法:
首先尝试添加谷歌搜索时发现的.csproj的某些部分,并查看“旧的” csproj文件(在转换为新的VS2017 / .net核心样式之前)
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
当我关闭解决方案并重新打开时,系统向我提出了有关该项目的TypeScript版本的问题,该问题设置为2.3,但是2.5可用,并且是否要升级该项目。我回答是。现在,我在项目属性中获得了TypeScript Build选项卡,它可以正确识别tsconfig.json文件。
我希望在build上编译现在可以,但是没有。
我还补充说:
<TypeScriptToolsVersion>2.5</TypeScriptToolsVersion>
到.csproj文件中的第一个PropertyGroup。这实际上也没有任何作用。
然后尝试添加:
<ItemGroup>
<TypeScriptCompile Include="src\sourcefile.ts" />
</ItemGroup>
与TypeScriptCompile元素一起编译的所有文件。没运气。
由于我已经在项目中设置了Gulp(实际上是从Gulp使用MSBuild来编译打字稿),所以我决定从从Gulp调用的MSBuild切换到在Gulp任务中使用NPM模块“ typescript”和“ gulp-typescript” :
已删除:
gulp.task("Build", function () {
return gulp.src('./' + packageName + '.csproj')
.pipe(msbuild(
{
stderr: true,
stdout: true,
toolsVersion: 15.0
}));
});
添加:
var tsProject;
gulp.task("CompileTypeScript", ['NameOfAnotherTaskThatThisTaskDependsOn'], function () {
var ts = require("gulp-typescript");
if (!tsProject) {
tsProject = ts.createProject("tsconfig.json");
}
var reporter = ts.reporter.fullReporter();
var tsResult = tsProject.src()
.pipe(tsProject(reporter));
return tsResult.js
.pipe(gulp.dest(""));
});
然后,将“ CompileTypeScript” Gulp任务绑定到Visual Studio中的“构建之前”。效果很好,尽管我想知道是否也可以使用新的csproj格式。
感谢@Balah和@Joshit的好的建议,它们也可能工作得很好。
编辑2018年2月8日:修复了一些拼写错误并更正了相关吞噬任务的名称(与任务名称相同,这当然不起作用)
有关更多信息,请参见本文
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句