Orchardcms 使用代码获取Orchard CMS 1.8+中的模块版本号

Orchardcms 使用代码获取Orchard CMS 1.8+中的模块版本号,orchardcms,Orchardcms,有时,我喜欢记录模块的版本号。如何以编程方式在代码中获取模块的版本号 与在控制器的构造函数中请求IORChardService的方式相同,您可以请求IExtensionManager。然后,使用带有module.txt id中指示的模块名称的GetExtension方法,它返回一个ExtensionDescriptor,该ExtensionDescriptor公开版本属性和其他有用属性 您可以在源代码中看到一个使用IExtensionManager的示例。如果需要从代码中的任何位置访问模块,则需

有时,我喜欢记录模块的版本号。如何以编程方式在代码中获取模块的版本号

与在控制器的构造函数中请求IORChardService的方式相同,您可以请求IExtensionManager。然后,使用带有module.txt id中指示的模块名称的GetExtension方法,它返回一个ExtensionDescriptor,该ExtensionDescriptor公开版本属性和其他有用属性


您可以在源代码中看到一个使用IExtensionManager的示例。

如果需要从代码中的任何位置访问模块,则需要首先初始化ExtensionManager。为此,您需要当前的工作上下文。我就是这样做的

public class Extensioner
{
    public IExtensionManager _manager { get; set; }

    public Extensioner()
    {            
        var httpContextAccessor = System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver.GetService(
            typeof(IHttpContextAccessor)) as IHttpContextAccessor;

        var workContext = WorkContextExtensions.GetWorkContext(httpContextAccessor.Current().Request.RequestContext);

        _manager = workContext.Resolve<IExtensionManager>();

    }

    public string getModuleVersion(string moduleName)
    {
        var _ver = "unknown";
        if (_manager != null)
        {
            _ver = _manager.GetExtension(moduleName).Version;
        }

        return _ver;
    }
}
给我指明道路的那一页:

还有一些理论: