Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MSBuild类型脚本编译目标_Msbuild_Typescript - Fatal编程技术网

MSBuild类型脚本编译目标

MSBuild类型脚本编译目标,msbuild,typescript,Msbuild,Typescript,我有一个T4模板,它生成了一些.d.ts文件,我想将这些文件包含在我的TypeScript构建中。我想更好地理解TypeScript编译器何时作为构建的一部分(或从.ts文件保存)运行,以便确保在TypeScript构建之前运行T4生成目标 有人能给我更多关于: CompileTypeScript目标何时实际运行 预计算CompileTypeScript目标实际上在做什么 是否有建议的方法确保MSBuild目标在TypeScript生成之前运行 (如果有必要,我使用的是VS2013更新3。)1.

我有一个T4模板,它生成了一些.d.ts文件,我想将这些文件包含在我的TypeScript构建中。我想更好地理解TypeScript编译器何时作为构建的一部分(或从.ts文件保存)运行,以便确保在TypeScript构建之前运行T4生成目标

有人能给我更多关于:

  • CompileTypeScript目标何时实际运行
  • 预计算CompileTypeScript目标实际上在做什么
  • 是否有建议的方法确保MSBuild目标在TypeScript生成之前运行

  • (如果有必要,我使用的是VS2013更新3。)

    1.CompileTypeScript目标实际运行的时间

    CompileTypeScript添加到CompiledPendson列表中,此列表在此处定义:“C:\Program Files(x86)\MSBuild\12.0\Bin\Microsoft.Common.CurrentVersion.targets”。默认目标(通常为build)取决于CoreBuild,而CoreBuild又要求执行编译目标,请参见target Compile(第2762行)和target CoreBuild(第703行)

    因此,当目标是build时,它会执行TypeScript构建,因为build需要BeforeBuild、CoreBuild和AfterBuild才能运行。CoreBuild目标需要很多目标,包括编译和TypeScipt,它们添加到Microsoft.TypeScript.targets文件(“C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v12.0\TypeScript\Microsoft.TypeScript.targets”)中。 见:

    
    CompileTypeScript;
    美元(已编撰);
    
    2.预计算CompileTypeScript目标实际上在做什么

    当使用outDir选项时,它会尝试查找最常见的路径。此外,当没有TypeScript文件时,这个任务会产生错误:没有要编译的文件(或其他)。 当指定单个输出(--out参数)时,它会执行不同的操作。 看起来Te VS向编译器提供了完整的路径,这个任务在可能的情况下使它们成为相对的(但我不知道原因)

    3.是否有建议的方法确保MSBuild目标在TypeScript生成之前运行

    创建自己的msbuild任务时,可以修改CompiledPendson目标。您应该在导入Microsoft.TypeScript.targets后执行此操作。您可以这样更改它:

    <PropertyGroup>
        <CompileDependsOn>
          CompileYourTarget;
          $(CompileDependsOn);
        </CompileDependsOn>
    </PropertyGroup>
    
    
    编译你的目标;
    美元(已编撰);
    

    编辑:我更改了答案的第2部分

    下面的答案是否回答了您的问题,还是您需要其他信息?
    <PropertyGroup>
        <CompileDependsOn>
          CompileYourTarget;
          $(CompileDependsOn);
        </CompileDependsOn>
    </PropertyGroup>