... 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"); } }
解决方法
如上所述,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为目标.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。