2014-04-04 44 views
2

我有一個打字稿項目。 devenv不斷重建這個項目。診斷輸出包含此行:devenv總是重建我的項目,因爲打字稿文件比pdb文件更新

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文件的打字稿文件?我如何解決它?

EDIT 1

我想澄清。它實際上不重新編譯打字稿或C#文件(第一次它重新編譯打字稿文件,但僅此)。它開始構建,因爲typescript比PDB更新,但是它確認沒有實際更改PDB依賴關係。 JavaScript文件也是如此 - 它們都是最新的。所以沒有什麼是真正重建的,但爲什麼要首先進入構建序列!

回答

0

我有一個類似的問題,但與txt文件,而不是打字稿文件。我打開csproj文件,找到聲明文本文件的部分,並將它移到聲明某些項目引用的部分的上方。基本上,在任何二進制文件之上。重新加載項目後,MSBuild將不會構建它,除非其中的文件實際發生了更改。

+0

這真的很有趣。您可以在更改之前和之後發佈csproj文件中的代碼片段嗎? – mark

0

我有一個與js文件類似的問題。將其Build Action設置爲None,重新編譯,然後返回Content,重新編譯即可解決問題。