以下程序集属性之间的有效差异是什么 - 也就是说,可能发生的运行时差异。
[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(带警告)生成。当构建机器安装了参考组件时(警告消失),产生第二个。我觉得第二个在某种程度上更正确,但没有任何具体的事实来支持这一点。这两个二进制文件似乎都有效。
答案 0 :(得分:0)
<强> 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.
}
}
我希望能解决这个问题。
答案 1 :(得分:0)
对于以后访问此页面的任何人,寻找一种方法来修复空的“ FrameworkDisplayName”(与我一样),您可以按照以下步骤操作:
//使用系统;使用System.Reflection; [部件: 全局:: System.Runtime.Versioning.TargetFrameworkAttribute(“。NETFramework,Version = v4.5.1”, FrameworkDisplayName =“ .NET Framework 4.5.1”)]
为什么这可能很重要的一些背景。 有时您需要确保二进制文件是可复制的,即在进行新的构建时,哈希值应该匹配。如果源计算机或目标计算机的此属性的值为空/不正确,则二进制文件(dll,exe)的元数据将发生变化,并且与另一个不匹配。
我们就是这种情况,我不得不花两天的时间来提出解决方案。希望这对某人有用。