.net TargetFramework FrameworkDisplayName为空
以下程序集属性之间的有效差异是什么?也就是说,可能会出现什么运行时差异(如果有的话).net TargetFramework FrameworkDisplayName为空,.net,.net-assembly,target-framework,.net,.net Assembly,Target Framework,以下程序集属性之间的有效差异是什么?也就是说,可能会出现什么运行时差异(如果有的话) [assembly: TargetFramework(".NETFramework,Version=v4.5.2", FrameworkDisplayName = "")] [assembly: TargetFramework(".NETFramework,Version=v4.5.2", Fram
[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生成第一个,并发出警告。当构建机器安装了参考程序集,警告消失时,会产生第二个警告。我觉得第二种说法在某种程度上更为正确,但没有任何具体的事实来支持这一点。这两个二进制文件似乎都能工作。TargetFramework
标识编译特定程序集所依据的.NET Framework版本
TargetFrameworkAttribute属性可以指定FrameworkDisplayName属性,以提供更具描述性的.NET Framework版本字符串,该字符串适合向程序集的客户端显示
资料来源:
FrameworkDisplayName
获取生成程序集所依据的.NET Framework版本的显示名称
资料来源:
下面的例子强调了你提到的第二行的正确性:
以下示例将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.
}
}
我希望这就澄清了问题。对于以后访问此页面的任何人,如果想像我一样找到修复空FrameworkDisplayName的方法,您可以按照以下步骤操作: 导航到C:\Users\mudalig\AppData\Local\Temp 查找文件 .NETFramework,版本=[程序集的.net 版本].AssemblyAttributes.cs。如。 .NETFramework,版本=v4.5.1.AssemblyAttributes.cs 打开文件并 检查FrameworkDisplayName元素。如果为空,则将其设置为预期值。例如,FrameworkDisplayName=.NET Framework 4.5.1 //使用制度;运用系统反思;[大会: 全局::System.Runtime.Versioning.TargetFrameworkAttribute.NETFramework,版本=v4.5.1, FrameworkDisplayName=.NET Framework 4.5.1] 关于为什么这可能很重要的一些背景知识。 有时,您需要确保二进制文件是可复制的,即在进行新构建时哈希值应该匹配。如果源或目标计算机的此属性值为空/不正确,则二进制dll exe的元数据将更改,并且与另一个不匹配
我们就是这样,我花了两天的时间试图找到解决办法。希望这对某些人有用。我的问题是,这有什么区别,如果有的话?正如我所指出的,表示程序集是使用.NET Framework 4.5.2构建的,既用于目标框架,也用于准备就绪的显示名称。让我强调一下:TargetFramework表示程序集,比FrameworkDisplayName重要得多。FrameworkDisplayName表示程序集的名称,不是必需的。