为什么Visual Studio会在temp文件夹中生成如下文件.NETFramework,Version=v4.5.AssemblyAttributes.cs

Wol*_*ich 4 c# msbuild visual-studio visual-studio-2013

为什么Visual Studio在构建解决方案时会在当前用户.NETFramework,Version=v4.5.AssemblyAttributes.cs的temp文件夹C:\Users\[USERNAME]\AppData\Local\Temp中生成如下文件 ?

该文件的内容如下所示:

// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
Run Code Online (Sandbox Code Playgroud)

这个问题出现在我的脑海中,因为我在重新启动我的 PC 时遇到了这个文件丢失的问题,请参阅Visual Studio Rebuilds unmodified projects time after a PC reboot

Leo*_*SFT 6

为什么Visual Studio会在temp文件夹中生成如下文件.NETFramework,Version=v4.5.AssemblyAttributes.cs

既然你对生成这个文件的原因感兴趣,我建议你可以查看一下这个文档:

MSBuild:由于生成的 AssemblyAttributes.cs 而不必要的重建

Kirill Osenkov 在那篇文章中使用了一个例子来解释为什么在临时文件夹中生成文件。

同样,我们可以知道在那篇文章中生成此文件后那些不必要的重建的原因以及如何解决此问题。

因此,将以下行添加到您的csproj文件中:

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

希望这可以帮助。