【问题标题】:Embedding Project with Typescript into another project将带有 Typescript 的项目嵌入到另一个项目中
【发布时间】:2016-07-08 10:50:13
【问题描述】:

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

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

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

这将在运行重建解决方案时包含项目中的 .js 文件,但在使用正常构建或从 Visual Studio 中“运行”时将不包含 .js 文件。

我认为问题与时间有关,我希望在 typescript 转译发生之后,但在 dll 包含在主项目中之前进行嵌入。

我尝试了以下选项“BeforeBuild”、“AfterBuild”、“BeforeResolveReference”、“AfterResolveReferences”、“BeforeResGen”和“AfterResGen”。 - 发现自一篇msdn文章here

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

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

任何想法将不胜感激

(我正在使用 Visual Studio 2015 Update 3 和 Typescript 1.8)

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

【问题讨论】:

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


    【解决方案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 的更多信息。

    【讨论】:

    • references.d.ts 是您制作的文件吗?还是我必须列出我要编译的每个 ts 文件? references.d.ts 看起来像一个定义文件,但我不确定它是如何制作的?谢谢
    • 这是一个引用所有打字稿文件的打字稿项目文件;如果您使用的是 TypeScript 1.8,您应该尝试使用 tsconfig.json。如果您不介意将所有文件传递到 tsc 命令行,则不需要使用 typescript 项目文件。例如,tsc $(ProjectDir)\Scripts\file1.ts $(ProjectDir)\Scripts\file2.ts ...
    • 抱歉造成混淆,tsconfig.json 替换了references.d.ts 的需要,它们都是为了组织打字稿文件。更多信息请参考typescriptlang.org/docs/handbook/tsconfig-json.html
    • 您可以将它添加到您的路径中,对吗?通常,tsc 位于 C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8
    猜你喜欢
    • 2013-11-08
    • 1970-01-01
    • 2013-07-08
    • 2012-10-22
    • 1970-01-01
    • 2015-03-15
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多