在Visual Studio 2010中,为什么创建了.NETFramework,Version = v4.0.AssemblyAttributes.cpp文件,我可以禁用它吗?

Mic*_*cci 21 .net c++ visual-studio-2010

我最近升级到Visual Studio 2010.现在,当我构建项目时,我得到一行:

1>  .NETFramework,Version=v4.0.AssemblyAttributes.cpp
Run Code Online (Sandbox Code Playgroud)

我已经知道这是新构建引擎msbuild.exe的结果,但是这个文件实际上是自动创建的并放在我的本地临时目录中(c:\ Documents and Settings\me\Local Settings\Temp).有谁知道为什么要创建这个文件,以及我是否可以禁用它的创建?

顺便说一句,在我看来它似乎没有什么用处.见下文:

#using <mscorlib.dll>
[assembly: System::Runtime::Versioning::TargetFrameworkAttribute(L".NETFramework,Version=v4.0", FrameworkDisplayName=L".NET Framework 4")];
Run Code Online (Sandbox Code Playgroud)

偶尔,如http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/15d65667-ac47-4234-9285-32a2cb397e32所述,它会导致问题.因此,非常感谢有关此文件的任何信息,以及如何避免其自动创建.谢谢!

Bri*_*ian 17

这对所有语言都是通用的(C#,VB和F#也有类似的东西).

您可以禁用它的一种方法是覆盖GenerateTargetFrameworkMonikerAttribute目标:

<!-- somewhere after the Import of Microsoft.somelanguage.targets -->
<Target Name="GenerateTargetFrameworkMonikerAttribute" />
Run Code Online (Sandbox Code Playgroud)

在您的项目文件中.

  • 不幸的是,如上所述,禁用*GenerateTargetFrameworkMonikerAttribute*会产生副作用,即所有C#项目都不会再次更新.如果将Visual Studio的输出详细程度设置为*Diagnostic*,则在构建C#项目时,您将获得以下行作为构建日志的第一个条目:>项目"FooBar"不是最新的.缺少输入文件>'c:\ users\<user>\appdata\local\temp\.netframework,version = v4.5.assemblyattributes.cs'. (5认同)
  • 我手动编辑了vcxproj文件并按照你的建议添加了该行,并且它有效.但是有没有设置或地方在项目属性页面中添加?更重要的是,它安全吗?我失去了什么? (2认同)
  • 请参阅此处了解TargetFrameworkAttribute功能支持的内容:http://msdn.microsoft.com/en-us/library/dd456789.aspx (2认同)

Han*_*ant 12

看一下c:\ program files\msbuild\microsoft.cpp\v4.0\microsoft.buildsteps.targets.它包含GenerateTargetFrameworkMonikerAttribute目标,即生成文件的目标.Condition元素确定它何时运行,GenerateTargetFrameworkAttribute是值.如果项目设置要求/ clr构建,那将始终如此.目标中的注释非常具有误导性,关于预编译头文件的喧嚣与目标的目的无关.

它在.cpp帮助文件中生成的[TargetFrameworkAttribute]很重要,它告诉程序运行的机器上的CLR需要存在的最低版本的.NET才能成功执行程序.它的主要用途是自动启动所需的.NET版本的安装程序,非常好的功能.

LNK4221很常见,没有牙齿,你可以忽略它.可悲的是链接器不提供证明的方式来抑制警告,基本的问题是,它不能是不够具体,抑制只有这一个.抑制帮助器.cpp需要编辑.targets文件并破坏自动安装功能,我不推荐这样做.


小智 5

我通过以下步骤解决了这个问题:

  1. 清洁解决方案
  2. 关闭解决方案
  3. 输入run命令%temp%,删除所有文件
  4. 通过单击保存项目的文件夹中的项目解决方案文件来打开解决方案.
  5. 在其中一个项目上进行重建.然后关闭Visual Studio 2010(是整个开发环境),然后重新打开解决方案文件.

    似乎重建,重新创建丢失的文件,但Visual Studio没有注意到它,因此您必须将其关闭并重新打开它才能再次正确查看该文件.