我有一个包含约50个C#项目的Visual Studio 2013解决方案。通常,如果我选择构建(F6),它将仅构建已更改的项目。但是有时在我关闭并重新启动PC之后,当我选择build(F6)时,它会全部重建。为什么?
当我重新启动PC时,并不会一直发生这种情况。大多数情况下,它说重启后所有项目都是最新的。但是有时它会重建所有内容。
我看了下面的问题Visual Studio Rebuilds unmodified projects及其答案。
下一步是将构建输出的详细程度设置为诊断。
在PC重新启动后Visual Studio全部重建时,我得到以下输出:
1>Project 'Project1' is not up to date. Missing input file
...
行数更多(超过1000行)。我看了看它们,但我仍然不明白为什么Visual Studio重建项目。
更新
为什么Visual Studio需要以下文件?
1>Project 'Project1' is not up to date. Missing input file
'c:\users\wo\appdata\local\temp\.netframework,version=v4.5.assemblyattributes.cs'.
...
答案 0 :(得分:2)
对于将来的旅行者,我认为这只是Visual Studio 2019、16.6和更高版本中的一个错误。
使用Visual Studio 2019版本16.6.0和16.6.1对我来说会发生此问题。我有在2010年,2015年,2017年或2019年16.5及更早版本中具有跨版本意识的C#项目,它们在同一台计算机和同一用户上,并且同一项目在同一文件夹和解决方案中。
使用最新的2019版本(在上个月左右(2020年5月和6月1日)),我会收到类似的消息:
1>项目“香蕉”不是最新的。缺少输入文件'c:\ users \ banana \ appdata \ local \ temp.netframework,version = v4.7.2.assemblyattributes.cs'。
如果我清理然后再构建,则正常。如果我运行连续的构建,则会收到错误消息。
在没有重新启动的情况下,甚至在清理了临时文件夹之后,或者无论是否以管理员身份运行Visual Studio,都会发生这种情况。它尝试查找的路径确实存在,如果粘贴到资源管理器中,则会弹出。
我用新的文件夹彻底清洁了除代码文件之外的所有文件,并遇到了同样的问题。对我来说,只有C#项目。所以我认为这是一个16.6错误。
查看最近的更改:
KirillOsenkov于2020年1月4日发表评论
@livarcocc是否可以优先处理此问题?这是一个具有影响力的问题,非常容易解决,已经开放了三年。似乎是低挂的水果。
无聊于2020年2月12日发表评论
此问题的修补程序现在已合并到master中,它将属于哪个版本?我看到这个问题在16.5里程碑上,所以这是否意味着它将在该版本中发布,或者是否还需要将该修补程序移植到另一个分支?
tmat于2020年2月12日发表评论
@bording我将里程碑更新为16.6,因为我相信master是16.6。
答案 1 :(得分:1)
有时,在PC重新启动后,Visual Studio会重建未修改的项目
引起此问题的一种可能性是建筑帐户失去了对temp
文件夹的许可。 要解决此问题,您可以尝试向read/write/execute
文件夹授予temp
权限,也可以尝试以管理员身份运行Visual Studio 以查看是否它与权限有关。
我们知道,如果我们在Visual Studio中打开/构建项目,则.NETFramework,Version=v4.x.AssemblyAttributes.cs
会自动出现在temp
文件夹中。如果您在重新启动PC或未以管理员身份运行Visual Studio后失去了对temp
文件夹的权限,我们将无法访问temp
文件夹,则Visual Studio将报告找不到文件{{1 }}放在version=v4.5.assemblyattributes.cs
文件夹中。
或者,您也可以通过在项目文件中添加以下属性,将该文件生成到Intermediate目录(通常称为obj)中:
temp
凭据:MSBuild: unnecessary rebuilds because of generated AssemblyAttributes.cs
希望这会有所帮助。