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'.

では、どうすればこの問題を解決できますか? 前述の 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)リストします。.jsPDB ファイルはありません。

では、なぜ 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ファイルにも同様の問題がありました。None に設定しBuild Action、再コンパイルしてから に戻しContent、再コンパイルすると問題が解決しました。

于 2016-02-25T12:20:39.523 に答える