我有一个带打字稿的项目。 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文件也是如此 - 它们都是最新的。所以什么都没有实际重建,但为什么要首先进入构建序列!
答案 0 :(得分:0)
我有一个类似的问题,但使用txt
文件而不是打字稿文件。我打开了csproj
文件,找到了声明文本文件的部分,并将其移到了声明一些项目引用的部分之上。基本上,高于任何二进制类型的文件。重新加载项目后,MSBuild将不会构建它,除非其中的文件实际更改。
答案 1 :(得分:0)
我的js
文件存在类似问题。将其Build Action
设置为None,重新编译,然后返回Content
,重新编译解决了问题。