タイプスクリプトを使用したプロジェクトがあります。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'.
では、どうすればこの問題を解決できますか? 前述の typescript ファイルは、PDB よりも真に新しいものです。しかし、PDB は typescript コンパイルの出力ではありません!!!
タイプスクリプトファイルをコンパイルする方法は次のとおりです。
<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>
プロジェクトは、アイテム グループ内の typescript ファイルを指定しTypeScriptCompile
ます。たとえば、次のようになります。
<TypeScriptCompile Include="Scripts\Benefits\Modules\PPACA\CalendarSetup.ts" />
もちろん、予想されるファイルのみを@(OutputJavaScripts)
リストします。.js
PDB ファイルはありません。
では、なぜ devenv は typescript ファイルと PDB ファイルを一致させるのでしょうか? どうすれば修正できますか?
編集1
明確にしたいと思います。実際には typescript または C# ファイルを再コンパイルしません (初めて typescript ファイルを再コンパイルしますが、それだけです)。typescript は PDB よりも新しいため、ビルドを開始しますが、PDB の依存関係が実際に変更されていないことを認識します。同じことが javascript ファイルにも当てはまります - それらはすべて最新です。したがって、実際には何も再構築されませんが、そもそもなぜビルド シーケンスに入る必要があるのでしょうか。