TargetFramework FrameworkDisplayName为空

时间:2015-07-14 09:55:48

标签: .net .net-assembly target-framework

以下程序集属性之间的有效差异是什么 - 也就是说,可能发生的运行时差异。

[assembly: TargetFramework(".NETFramework,Version=v4.5.2", 
                            FrameworkDisplayName = "")]

[assembly: TargetFramework(".NETFramework,Version=v4.5.2",
                           FrameworkDisplayName = ".NET Framework 4.5.2")]

当构建机器没有安装4.5.2参考程序集(通过目标程序包)时,第一个由MSBuild(带警告)生成。当构建机器安装了参考组件时(警告消失),产生第二个。我觉得第二个在某种程度上更正确,但没有任何具体的事实来支持这一点。这两个二进制文件似乎都有效。

2 个答案:

答案 0 :(得分:0)

<强> TargetFramework

标识编译特定程序集的.NET Framework版本。

TargetFrameworkAttribute属性可以指定FrameworkDisplayName属性,以提供更具描述性的.NET Framework版本字符串,该字符串适合于向程序集的客户端显示

来源:https://msdn.microsoft.com/en-us/library/system.runtime.versioning.targetframeworkattribute(v=vs.110).aspx

FrameworkDisplayName

获取构建程序集的.NET Framework版本的显示名称。

来源:https://msdn.microsoft.com/en-us/library/system.runtime.versioning.targetframeworkattribute.frameworkdisplayname(v=vs.110).aspx

下面的例子强调了你提到的第二行的正确性:

以下示例将TargetFrameworkAttribute应用于程序集,并分配两个属性值以指示程序集是使用.NET Framework 4.5.2构建的。

using System;
using System.Runtime.Versioning;

[assembly:TargetFramework(".NETFramework,Version=v4.5.2", 
          FrameworkDisplayName = ".NET Framework, Version 4.5.2")]

namespace MyCompany.Utilities
{
   public class StringLibrary
   {
      // Members defined here.
   }
}

我希望能解决这个问题。

答案 1 :(得分:0)

对于以后访问此页面的任何人,寻找一种方法来修复空的“ FrameworkDisplayName”(与我一样),您可以按照以下步骤操作:

  • 导航到C:\ Users \ mudalig \ AppData \ Local \ Temp
  • 查找文件 “ .NETFramework,Version = [程序集的.n​​et 版本] .AssemblyAttributes.cs”。例如。 .NETFramework,Version = v4.5.1.AssemblyAttributes.cs
  • 打开文件,然后 检查“ FrameworkDisplayName”元素。如果为空,则将其设置为期望值。 (例如FrameworkDisplayName =“ .NET Framework 4.5.1”)
  

//使用系统;使用System.Reflection; [部件:   全局:: System.Runtime.Versioning.TargetFrameworkAttribute(“。NETFramework,Version = v4.5.1”,   FrameworkDisplayName =“ .NET Framework 4.5.1”)]

为什么这可能很重要的一些背景。 有时您需要确保二进制文件是可复制的,即在进行新的构建时,哈希值应该匹配。如果源计算机或目标计算机的此属性的值为空/不正确,则二进制文件(dll,exe)的元数据将发生变化,并且与另一个不匹配。

我们就是这种情况,我不得不花两天的时间来提出解决方案。希望这对某人有用。