我有一个使用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
答案 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的更多信息。