devenv总是重建我的项目,因为typescript文件比pdb文件更新

时间:2014-04-04 03:38:47

标签: msbuild devenv

我有一个带打字稿的项目。 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如何匹配带有PDB文件的打字稿文件呢?我该如何解决?

编辑1

我想澄清一下。它实际上并没有重新编译打字稿或C#文件(这是第一次重新编译打字稿文件,但仅限于此)。它启动构建,因为typescript比PDB更新,但它识别出没有PDB依赖实际上已经改变。 javascript文件也是如此 - 它们都是最新的。所以什么都没有实际重建,但为什么要首先进入构建序列!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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