有时,我喜欢记录模块的版本号。如何在代码中(以编程方式)获取模块的版本号?
答案 0 :(得分:0)
与您在控制器的构造函数中请求IOrchardServices
的方式相同,您可以请求IExtensionManager
。然后,使用带有模块名称的GetExtension
方法(如 module.txt id中所示),它返回一个公开ExtensionDescriptor
属性的Version
,以及其他有用的属性。
您可以在RecipeHarvester源代码中看到使用IExtensionManager
的示例。
答案 1 :(得分:0)
如果需要从代码中的任何位置访问模块,则需要首先初始化ExtensionManager。为此,您将需要当前的workContext。这就是我这样做的方式。
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;
}
}
向我展示道路的页面:
还有一些理论: https://orcharddojo.net/orchard-resources/Library/Wiki/WorkContext