项目 '<project name>' 不是最新的。输入文件 '<static file>' 在输出文件之后被修改。

16

我正在创建一个 TypeScript 项目 (项目类型 - 使用 TypeScript 的 Web 应用程序),其中包括 TypeScript、JavaScript 和其他静态文件。

我正在使用 Visual Studio 2015 构建环境和 Microsoft.TypeScript.MSBuild.1.8.11 nuget 包来进行实际编译 (即不使用 tsconfig.json)。

我有一个后构建事件任务,其副作用是“触碰”一些这些静态文件。当我随后触发另一个构建时,在输出中会得到一个警告*:

Project '<project name>' is not up to date.
Input file '<static file>' is modified after output file ''.`

项目被迫重新构建。

有人能想出我如何确定VS2015在谈论“output file''”时指的是什么吗?

  • 我已经将MSBuild设置为在工具->选项->构建和运行设置中输出诊断信息。
3个回答

20

我只是删除了.vs文件夹并清理了解决方案,然后就正常工作了。

输入图像描述


1
尽管这样做解决了我的问题,但我想更好地理解为什么它实际起作用。 - DH.
@DH。我认为这与文件跟踪有关,可能存在错误。 - Arun Prasad E S

7
为了回答自己的问题并希望能帮助其他人,我来翻译一下。
在VS报告中显示为“output file''”文件似乎涉及到bin文件夹中输出的dll/pdb文件,还涉及到编译过程中生成的obj/$(Configuration)文件。
因此,如果我执行以下操作:
touch obj\Debug\myProj.dll obj\Debug\myProj.pdb
touch bin\myProj.dll bin\myProj.pdb

在我的后构建任务中,如果这样做,似乎可以解决问题,并让编译器回到我所期望的状态:

 ========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========

这里有类似问题的其他解决方案:https://dev59.com/-Xvaa4cB1Zd3GeqPINO4 - Thomas927
我关闭了VS,然后删除了bin和obj文件夹。之后一切正常。 - ADH

0
我遇到了这个问题,并尝试了这个页面上的解决方案,但没有成功。最终我发现,在我的情况下,问题的原因是与项目依赖关系有关。
这在一个包含许多C#项目的大型解决方案中发生,使用程序集文件引用进行配置,而不是项目引用。也就是说,这些项目并没有直接引用彼此;它们通过程序集文件引用来引用其他项目生成的DLL文件,这些DLL文件位于一个大型二进制目录中,其中"copy local=false"。我只在解决方案级别上设置了"构建顺序依赖项",以确保项目按适当的顺序构建。
在某个时候,我重构了代码,并将一个类型从一个程序集移动到另一个程序集,以打破一些不需要的依赖关系。但是,我未能相应地更新程序集文件引用和构建顺序依赖项。结果,我得到了一个循环的项目构建顺序依赖项和程序集文件引用(两个项目互相依赖并引用对方的DLL)。
Visual Studio对此没有抱怨,并按照可以工作的顺序编译了这些项目(可能仅仅是运气好),但即使没有任何更改,它仍然持续编译三分之二的项目,并且日志中出现了"输入文件'<静态文件>'在输出文件''之后被修改"的奇怪消息。修复依赖关系解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接