加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 是否有可能伪装成比实际更低的.NET版本?

发布时间:2020-12-15 22:05:35 所属栏目:百科 来源:网络整理
导读:Sharepoint 2010在单个位置进行版本检查(也从一些更新开始WSS 3.0也有这样的检查): ...Version version = Environment.Version;if (version.Major 2){ ... throw new PlatformNotSupportedException(@string); 我知道,我不应该这样做,但出于好奇 – 是否有
Sharepoint 2010在单个位置进行版本检查(也从一些更新开始WSS 3.0也有这样的检查):

...
Version version = Environment.Version;
if (version.Major > 2)
{
    ...
    throw new PlatformNotSupportedException(@string);

我知道,我不应该这样做,但出于好奇 – 是否有可能在不编写巨大代理的情况下克服这个问题?

出于好奇,想知道是否可以做以下任何一件事:

>在运行时调整sharepoint的dll中的这个检查来传递(类,使用它是密封的和内部的,如果你很好奇,它是Microsoft.SharePoint.dll中的Microsoft.SharePoint.Administration.SPConfigurationDatabase类)
>临时覆盖Environment.Version返回值,类似于:

使用(new EnvironmentVersionOverride(“2.0”)){…}
>其他一些方式?

更新:
Environment.Version反编译源:

public static Version Version
{
  get
  {
    return new Version("4.0.30319.18444");
  }
}

解决方法

首先,创建了WSS 3.0 / Share Point 2010,以便Microsoft的工程师确切地知道哪个版本的公共语言运行时(CLR)WSS 3.0 / Share Point 2010可以无错误地运行.

如上所述,Environment.Version返回当前在您的进程中加载??的CLR版本(不是.NET Framework版本).没有办法“伪造”或“代理”这个值.如果您在Windows 7,Windows Server 2008或Windows Server 2008 R2计算机上运行SharePoint,则会自动安装CLR 2.0(但我不确定Windows 8或Windows Server 2012).

在我看来,您需要确保运行Share Point 2010(或WSS 3.0)网站的IIS中的应用程序池使用.Net Framework版本2.0.50727(这意味着使用CLR 2.0).如here所述,Share Point 2010将在其网站使用面向.NET Framework 4.0的应用程序池时拒绝运行.

如果运行Share Point 2010 / WSS 3.0的计算机没有安装.NET Framework 3.5 SP1(包括CLR 2.0),安装并确保应用程序池设置正确可以解决您的问题,您不需要“代理” “Environment.Version的价值.

如果您正在尝试创建供Share Point 2010使用的库,请确保您的库以.NET Framework 3.5为目标.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读