2

我有一个带有打字稿的项目。devenv 不断重建这个项目。诊断输出包含以下行:

Project 'Benefits' is not up to date. Input file 'C:\abc\UI\BenefitsWeb\Scripts\Benefits\Modules\PPACA\ApprovalScreen.ts' is modified after output file 'C:\abc\UI\BenefitsWeb\bin\Dayforce.Web.Benefits.pdb'.

那么,我该如何解决这个问题呢?上述打字稿文件确实比 PDB 更新。但是 PDB 不是打字稿编译的输出!!!

这是我编译打字稿文件的方法:

<PropertyGroup>
  <CompileDependsOn>
    $(CompileDependsOn);
    CompileTypeScript
  </CompileDependsOn>
</PropertyGroup>

<Target Name="GetInputs">
  ...
</Target>

<Target Name="GetOutputs">
  ...
</Target>

<Target Name="CompileTypeScript" DependsOnTargets="GetInputs;GetOutputs" Inputs="@(InputTypeScripts)" Outputs="@(OutputJavaScripts)">
  ...
</Target>

该项目指定TypeScriptCompile项目组中的打字稿文件,例如:

<TypeScriptCompile Include="Scripts\Benefits\Modules\PPACA\CalendarSetup.ts" />

当然,仅@(OutputJavaScripts)列出预期的.js文件。那里没有 PDB 文件。

那么 devenv 是如何将 typescript 文件与 PDB 文件匹配的呢?我如何解决它?

编辑 1

我想澄清一下。它实际上并没有重新编译 typescript 或 C# 文件(这是它第一次重新编译 typescript 文件,但仅此而已)。它开始构建,因为 typescript 比 PDB 更新,但随后它认识到 PDB 依赖项实际上没有改变。javascript 文件也是如此——它们都是最新的。所以实际上什么都没有重建,但是为什么要首先进入构建序列!

4

2 回答 2

0

我有一个类似的问题,但使用的是txt文件而不是打字稿文件。我打开csproj文件,找到声明文本文件的部分,并将其移到声明一些项目引用的部分上方。基本上,高于任何二进制类型的文件。重新加载项目后,MSBuild 不会构建它,除非其中的文件实际发生了变化。

于 2014-08-08T13:05:01.250 回答
0

我对文件有类似的问题js。将其设置Build Action为 None,重新编译,然后返回Content,重新编译解决了这个问题。

于 2016-02-25T12:20:39.523 回答