有时在PC重新启动后,Visual Studio会重建未修改的项目

时间:2018-09-06 06:03:05

标签: c# windows visual-studio visual-studio-2013 msbuild

我有一个包含约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'.
...

2 个答案:

答案 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。

https://github.com/microsoft/msbuild/issues/1479

答案 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

希望这会有所帮助。

相关问题