Try*_*gve 5 msbuild typescript visual-studio-2017
当前运行VS 2017 15.3.5和Typescript 2.5.2 SDK。我如何获取TypeScript以在构建(常规MSBuild)上进行编译。csproj是新的“ .net核心样式”,项目类型是类库。
在看到这里的两个好的答案之前,这是我尝试过的:
首先尝试添加 .csproj 的一些部分,我在谷歌搜索和查看“旧”csproj 文件时发现引用了这些部分(在转换为新的 VS2017/.net core 样式之前)
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
Run Code Online (Sandbox Code Playgroud)
当我关闭解决方案并重新打开时,我遇到了一个关于项目的 TypeScript 版本设置为 2.3 的问题,但 2.5 可用,以及我是否想升级项目。我回答说是的。现在,我在项目属性中找到了 TypeScript Build 选项卡,它可以正确识别 tsconfig.json 文件。
我希望构建时编译现在可以工作,但事实并非如此。
我还补充道:
<TypeScriptToolsVersion>2.5</TypeScriptToolsVersion>
Run Code Online (Sandbox Code Playgroud)
到 .csproj 文件中的第一个 PropertyGroup。这也没有真正起到任何作用。
然后尝试添加:
<ItemGroup>
<TypeScriptCompile Include="src\sourcefile.ts" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
使用 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
}));
});
Run Code Online (Sandbox Code Playgroud)
添加:
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(""));
});
Run Code Online (Sandbox Code Playgroud)
然后我将“CompileTypeScript”Gulp 任务绑定到 Visual Studio 中的 Before Build。工作正常,尽管我想知道这是否也可以使用新的 csproj 格式。
感谢@Balah 和@Joshit 的好建议,他们可能也工作得很好。
编辑 2018 年 2 月 8 日:修复了一些拼写错误并更正了依赖 gulp 任务的名称(与任务名称相同,当然这不起作用)
欲了解更多信息,请参阅这篇文章
| 归档时间: |
|
| 查看次数: |
3179 次 |
| 最近记录: |