将带有Typescript的项目嵌入到另一个项目中

时间:2016-07-08 10:50:13

标签: visual-studio typescript visual-studio-2015

我有一个使用Typescript的Visual Studio项目。这个项目被编译成一个dll,然后在主项目中被引用。这适用于所有正常编译的文件,但是当涉及到转换的javascript文件时,我遇到了一个问题。

子项目在.csproj文件中有以下内容

<Target Name="AfterClean">
    <ItemGroup>
      <EmbeddedResource Include="**\*.html;**\*.cshtml;**\*.css;**\*.js;**\*.map;**\*.jpg;**\*.png" />
    </ItemGroup>
  </Target>

当运行Rebuild Solution时,这将包含项目中的.js文件,但在正常构建或运行&#34;运行&#34;时,它将不包含.js文件。使用Visual Studio。

我认为这个问题与时间有关,我希望嵌入在发生打字稿之后发生,但是在dll包含在主项目之前。

我尝试了以下选项&#34; BeforeBuild&#34;,&#34; AfterBuild&#34;,&#34; BeforeResolveReference&#34;,&#34; AfterResolveReferences&#34;,&#34; BeforeResGen& #34;和#34; AfterResGen&#34;。 - 从msdn文章here

中找到

理想情况下,我想将DependsOnTargets = TypeScript编译添加到我的嵌入任务中,因此它强制嵌入在transile之后发生,但是typescript编译似乎不是目标,因为它在.csproj中就像这样文件,所以我不相信这是可能的

<ItemGroup>
    <TypeScriptCompile Include="app\app.module.ts" />
    ...
 </ItemGroup>

非常感谢任何想法

(我使用的是Visual Studio 2015 Update 3和Typescript 1.8)

编辑:构建服务器在PATH上没有tsc,所以我无法从预建事件中调用tsc

1 个答案:

答案 0 :(得分:1)

我试过做类似的事情,解决方案对我有用,就是使用TypeScript命令行在预构建事件中编译TypeScript。

<PropertyGroup>
    <PreBuildEvent>
        tsc $(ProjectDir)\Scripts\references.d.ts
        // or compile tsconfig.json if you use TypeScript 1.8
        // tsc --project $(ProjectDir)\Scripts\
    </PreBuildEvent>
</PropertyGroup>

然后为 BeforeBuild

添加以下目标元素
<Target Name="BeforeBuild" DependsOnTargets="PreBuildEvent">
    <ItemGroup>
        <EmbeddedResource Include="**\*.js" />
    </ItemGroup>
</Target>

您可以找到有关tsconfig.json here的更多信息。