如何获取Visual Studio 2017以在类库项目的构建中编译TypeScript(新的.net核心样式.csproj)

Try*_*gve 5 msbuild typescript visual-studio-2017

当前运行VS 2017 15.3.5和Typescript 2.5.2 SDK。我如何获取TypeScript以在构建(常规MSBuild)上进行编译。csproj是新的“ .net核心样式”,项目类型是类库。

jan*_*y02 5

这里是对包括 msbuild 在内的更多构建工具的描述:

最简单的方法:

  1. 右键单击 -> 管理 NuGet 包
  2. 搜索 Microsoft.TypeScript.MSBuild
  3. 点击安装
  4. 安装完成后,重建!

为了能够构建将 tsconfig.json 设置为项目中的内容。


Try*_*gve 3

在看到这里的两个好的答案之前,这是我尝试过的:

首先尝试添加 .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 任务的名称(与任务名称相同,当然这不起作用)

欲了解更多信息,请参阅这篇文章