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

问题描述 投票:1回答:1

我有一个包含大约50个C#项目的Visual Studio 2013解决方案。通常,如果我选择构建(F6),它只会构建已更改的项目。但有时在我关闭并重新启动我的PC后,它会在我选择构建时重建所有内容(F6)。为什么?

当我重新启动电脑时,这不会发生。大多数时候,它表示重启后所有项目都是最新的。但有时它会重建所有。

我看了下面的问题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'.
...
c# windows visual-studio visual-studio-2013 msbuild
1个回答
1
投票

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

导致此问题的一种可能性是构建帐户失去了对temp文件夹的权限。要解决此问题,您可以尝试将权限read/write/execute授予temp文件夹,或者尝试以管理员身份运行visual studio以查看它是否与权限相关。

众所周知,如果我们在visual studio中打开/构建项目,.NETFramework,Version=v4.x.AssemblyAttributes.cs会自动出现在temp文件夹中。如果您在重新启动PC后失去了对temp文件夹的权限或者没有以管理员身份运行visual studio,我们无法访问temp文件夹,那么Visual Studio将报告它无法在version=v4.5.assemblyattributes.cs文件夹中找到文件temp

或者,您也可以通过向项目文件添加以下属性,将此文件生成到Intermediate目录(通常称为obj):

  <PropertyGroup>
    <TargetFrameworkMonikerAssemblyAttributesPath>$([System.IO.Path]::Combine('$(IntermediateOutputPath)','$(TargetFrameworkMoniker).AssemblyAttributes$(DefaultLanguageSourceExtension)'))</TargetFrameworkMonikerAssemblyAttributesPath>
  </PropertyGroup>

证书:MSBuild: unnecessary rebuilds because of generated AssemblyAttributes.cs

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.