首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取具有MEF插件的每个DLL的版本号?

为了获取具有MEF插件的每个DLL的版本号,您可以使用以下方法:

  1. 使用反射API:

通过反射API,您可以获取每个DLL的Assembly对象,然后从该对象中获取版本号。以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.Reflection;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;

namespace GetDllVersion
{
    class Program
    {
        static void Main(string[] args)
        {
            var catalog = new AggregateCatalog();
            catalog.Catalogs.Add(new DirectoryCatalog("path/to/dll/folder"));

            var container = new CompositionContainer(catalog);
            container.ComposeParts();

            foreach (var lazyExport in container.GetExports<object, IDictionary<string, object>>())
            {
                var export = lazyExport.Value;
                var type = export.GetType();
                var assembly = type.Assembly;
                var version = assembly.GetName().Version;

                Console.WriteLine($"DLL: {assembly.FullName}, Version: {version}");
            }
        }
    }
}
  1. 使用PowerShell脚本:

您可以使用PowerShell脚本来获取每个DLL的版本号。以下是一个示例脚本:

代码语言:powershell
复制
$dllFolder = "path/to/dll/folder"
$dllFiles = Get-ChildItem -Path $dllFolder -Filter *.dll

foreach ($dllFile in $dllFiles) {
    $assembly = [Reflection.Assembly]::LoadFrom($dllFile.FullName)
    $version = $assembly.GetName().Version
    Write-Host "DLL: $($assembly.FullName), Version: $version"
}

请注意,这些示例代码和脚本仅用于演示目的。在实际应用中,您可能需要根据您的需求进行调整。

在这个示例中,我们使用了MEF(Managed Extensibility Framework)来加载DLL文件。然后,我们使用反射API和PowerShell脚本来获取每个DLL的版本号。

这个问答内容中没有提到云计算品牌商,因此我们可以直接给出答案内容。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在代码中获取Java应用当前版本号

最近需要在项目中获取项目的版本号,最笨方法莫过于硬编码一个版本号,当然我也是这么干。不过闲下来时候突发奇想Spring Boot项目中pom.xml定义版本号能不能通过API获得呢?...从配置文件读取 Maven在构建项目时可以通过资源插件将构建属性即pom.xml中属性注入到指定资源文件中,具体操作为: ... <!...: '@project.version@' 然后如何取值就不用多说了吧。...Spring Boot提供 Spring Boot其实已经内置了获取项目构建信息自动配置ProjectInfoAutoConfiguration,它包含一个条件BeanBuildProperties:...spring-boot-version", "time" : { "epochSecond" : 1620664643, "nano" : 591000000 } } 总结 今天介绍了几种从通过API获取项目构建版本信息方法

3.2K20

如何在代码中获取Java应用当前版本号

最近需要在项目中获取项目的版本号,最笨方法莫过于硬编码一个版本号,当然我也是这么干。不过闲下来时候突发奇想Spring Boot项目中pom.xml定义版本号能不能通过API获得呢?...从配置文件读取 Maven在构建项目时可以通过资源插件将构建属性即pom.xml中属性注入到指定资源文件中,具体操作为: ... <!...: '@project.version@' 然后如何取值就不用多说了吧。...Spring Boot提供 Spring Boot其实已经内置了获取项目构建信息自动配置ProjectInfoAutoConfiguration,它包含一个条件BeanBuildProperties:...spring-boot-version", "time" : { "epochSecond" : 1620664643, "nano" : 591000000 } } 总结 今天介绍了几种从通过API获取项目构建版本信息方法

5.9K20
  • 如何更换IDEA上scala插件版本号并安装合适版本

    相信"聪明"小伙伴们肯定想到了在IDEAplugins上肯定有对支持scala插件。然后兴冲冲地在Marketplace上找到点击install,下完就"完事"了。 ?...为什么这么说呢,因为IDEA上scala插件版本号与IDEA版本号不一致的话可能在后续开发过程中出现一些BUG。...为了减少我们后期找bug"痛苦",请务必下载IDEA 版本一致scala插件。 先查看我们当前IDEA版本号。 ?...先查看我们之前在IDEA上安装scala版本号 ? 这明显与IDEA版本号不一致,所以在导入正确之前我们需要先删除。 ? 点击卸载Uninstall ?...然后选择scala插件安装位置。 ? 选择完毕ok后,重启IEDA。 再查看效果。 ?

    3.7K30

    Gradle中如何获取dependencies依赖库最新版本号

    Gradle中如何获取dependencies依赖库最新版本号  初学Android,虽然自以为Java基础还行,上手应当是飞快,但还是栽了不少跟头,其中依赖库最新版本号如何获取就是一个问题。...其就是是说明我们需要使用androidx依赖库而不是android.support所定位依赖库。但是这个如何找呢?而且也不知道如何找一个最新,或者最稳定开发版本。  ...上面给出是androidx;下面则是android.support。并且可以看到,各个版本号,以及个版本号版本号。...子版本号符号说明: 发行版本号(希腊字母) 含义 alpha 内测版本 beta 公测版本 gamma 正式发布版本  下面我们知道了版本号含义,但是如何去在gradle配置文件中写呢?...此例中我们就可以写,当然版本号可以选择最新:1.1.0-beta04 implementation 'androidx.recyclerview:recyclerview:1.0.0'  有些童鞋可能会说

    5.4K10

    WPF使用MEF插件开发打造自己工具箱

    最近闲来无事,想着搞点事情来着,想搞一个工具箱程序,又想着自由灵活点,于是就选用了MEF.这玩意适用于小项目,可以方便做出一个插件开发系统....后续打算把它做成从服务器上检索插件形式,找到想要插件,就点击下载直接使用.嘿嘿.一步一步来吧. 下面我先介绍一下MEF MEF简介 MEF可以方便在c#程序中实现插件式开发。...使用MEF主要由4个步骤完成 1、定义插件插口 2、公开接口实现类....= null); //插件名,用于主程序中获取并显示 string PluginName { get; } //插件唯一Key,用于区分插件,(后期做下载更新插件时候会用到...{guid}.dll //这是我们定义规定,后面开发插件,dll名字都要是这样 //没有规矩不成方圆

    1.9K31

    .NET自带IOC容器MEF之初体验

    让应用程序与扩展程序之间不产生直接依赖,这样也允许在多个具有同样扩展需求之间共享扩展程序。...解决问题     MEF解决了什么呢?以往,如果一个应用程序需要支持插件方式必须要实现自己底层并且这些插件通常是针对特有应用,不能被其他应用所使用。...每个可组合Part提供了一个或多个Export,并且通常依赖于一个或多个外部提供服务或Import。每个Part管理一个实例为应用程序运行 ? MEF 提供一种通过“组合”隐式发现组件方法。...为了使导入与导出匹配,导入和导出必须具有相同协定。 假设有一个类MyClass,它声明了可以导入插件类型是IMyAddin。...注:三个项目都要添加System.ComponetModel.Composition.dll引用。

    1.7K21

    MEF框架基础理解

    1.概要 什么是MEF? Managed Extensibility Framework (MEF) 是用于创建可扩展轻量级应用程序库。 它让应用程序开发人员得以发现和使用扩展且无需配置。...将标记了Export特性dll注册到IoC容器中。 (5)IoC容器: 依赖注入框架,用来映射依赖,管理对象创建和生存周期。...特性往往只能修饰一个对象一次,需要设置属性属性时候,需要给属性添加AttributeUsage属性,可以用来设置:是否允许多次修饰、修饰对象类别(类or字段等) DLL文件=IL中间语言+metadata...(8)插件 (图片来自网络) MEF设计思维是插件化编程,那么插件怎么实现呢?...特性在这里主要作用帮助Catalog发现基于约定特殊实现条件编码插件

    64210

    基于OEA框架客户化设计(三) “插件式”DLL

    本篇主要描述GIX4项目中如何把单独模块设计为一个“插件”,如何把它组装到系统中。至于为什么加引号,之后会有说明。...动态加载DLL     在产品线工程开发中,需要动态加载DLL,是上述“721”中“2” 和“1”。     OEA框架中,使用MEF作为插件框架。...(详见金根:《.Net4下MEF(Managed Extensibility Framework) 架构简介》)。...,也就是说,合同模块不是真的插件,而是在产品编译期已经知道必须包含这个DLL。...所以目前只是做到编译期选择装配,而不是运行时动态插入新DLL,这就是为什么一开始说合同模块并不是真正插件原因了。 总结     到本篇为止,客户化内容已经基本说明。

    1.1K90

    .Net5中WebApi使用MEF2框架使用

    方式,原来MEF插件方式在《C# MEF插件使用及Demo分享》文章中介绍过,不过当时用是WinForm版本,现在是要在NET5上使用,所以就专门做了DEMO程序来验证可行性。...实现效果 同一个API根据参数不同调用第一个插件函数。 同一个API根据参数不同调用第二个插件函数。...02 创建Mef接口类 1.创建WebMef.Core类库 也是新建一个.net5类库,这个类库里用来写Mef插件接口 2.添加Mef2Nuget包 在Nuget包中添加Microsoft.Composition...新建一个MefConntrol类,加入一个Get方法,根据输入name名称查找出对应MEF插件,然后直接调用接口实现Send方法即可。...Plugin1和Plugin2两个插件编译生成时并不是默认生成在WebMefDemobin下面,需要自己配置输出,或是生成后拷贝到WebMefDemobin目录下才能获取到。

    96830

    C# MEF插件使用及Demo分享

    单从名字我们不难发现:MEF是专门致力于解决扩展性问题框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展轻型应用程序库...插件里面的Text 和Do()就是实现接口对应方法,我们在plugin1里面定义为插件1, DO方法实现弹出窗体显示插件1中文 Plugin2 ?...和插件1相同,只不过名称不同 Plugin3 ? 插件三里面除了实现接口类,又增加了一个窗体Form1 然后我们在MyPlugin3里面写入接口实现方法 ?...Button事件就是弹出窗体显示我是插件3 ---- 这样代码就完后实现了,编译完成后我们把三个插件DLL放到运行目录下plugin下面 ---- ?...---- 下面的自己做这个MEFDEMO演示视频: ?

    2.8K31

    使用 MEF 轻松实现云部署

    在本文中,我们将看看如何使用 MEF 使云部署更易于管理一点、更灵活一些。MEF(以及 Unity 之类类似框架)是一种软件结构,可将开发人员从管理依赖关系解析、对象创建和实例化等工作中释放出来。...这并不意味着每个类都将直接继承自某个接口,但类通常将具有抽象层,这些抽象层遵从“接口 “ 虚拟 “ 具体”之类模式。...我们继续使用霰弹式方法并且获取所有文件,然后将它们放置于一个位置中,因为我们知道,它只是此示例两个或三个 DLL。 这样,我们使文件就位并且仅需要生成容器。...正如您所看到,我们在将新业务规则库上载到存储容器中之前具有其中一个。 我们已将 NewRules.dll 放置于存储位置中,现在需要将其加载到应用程序中。...您可以将此配置为在部署内发生,但问题之一是如何进行协调。为此,要求协调实例重新启动,因此,或者需要选择一个首要实例,或者要具有某个投票系统。

    1.3K70

    WPF 通过多进程实现异常隔离客户端

    约定插件入口方法 可以通过多种方式返回插件界面。我这里约定每个插件 dll 都有一个 PluginStartup 类,PluginStartup.CreateView() 可以返回插件界面。...启动插件进程,使用匿名管道实现进程间通信 进程间通信有多种方式,需要功能齐全可以使用 grpc,简单使用管道就好了。 客户端通过指定插件 dll 地址来加载插件。...加载插件时候,启动一个子进程,并且通过管道通信,传输包装插件 Win32 窗口句柄。...dll 并将插件界面转换成 Win32 窗口,然后通过管道传输句柄。...如果不需要异常隔离,使用 mef 或者 prism 已经可以实现良好插件功能。 System.AddIn 也可以提供类似的功能,但是只支持到 .net framework 4.8。

    1.3K30

    无特性 MEF 配置方法

    这种公开扩展点和定义插件方法使用所谓特性化编程模型,开发人员可以使用特性修饰属性、类甚至方法,以通告需要具有特定类型依赖关系或能够满足特定类型依赖关系。...最后,我将讨论如何将约定驱动配置加入到应用程序模型中,以及它如何将使用 MEF 和现成 DI 准则变成一件非常简单事情。...图 1、图 2 和图 3 分别显示了其中每个代码。...约定驱动配置 现在,我已具有正常工作代码特性化版本,我想说明如何使用 RegistrationBuilder 将这些代码段转换为约定驱动模型。让我们先删除所有添加了 MEF 特性类。...具有讽刺意味是,RegistrationBuilder 可以使您日常开发活动不再那么以 MEF 为中心,您在项目中使用 MEF 是高度无缝

    1.3K50

    C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面

    01 — 前言 MEF是微软自家托管可扩展框架,在这里我把它用成了ioc容器。...利用这一特点,在多人合作项目开发中,一个解决方法就可以拆分成很多个项目,只用在主项目中搭建框架,每个分支项目开发好以后加载到容器中,就可以实现界面和逻辑调用,可能这样解释有点生涩,具体我们看下面实例再去理解...注入dll 详细代码如下: DisplayRootViewFor();//显示界面 这里也可以让主界面的viewmodel继承一个公共接口,比如IShell,这样这里接可以改写为...handler) //在某个目录下dll...ioc获取viewmodel实例: MefTestView = IoC.Get(); 这样其它项目的界面就成功被加载到了我们主项目中,然而我们并没有实例化,

    1K40

    热更新

    如何做热更新?unity3d热更新方法?...Android应用热更新: 1.将要执行代码编译为库文件assembly dll.动态链接库 通过反射方式再Unity中加载被打包dll文件并执行: 将dll打包成AB包,通过www加载在...AB包,通过反射获取dll类 WWW www = WWW.LoadFromCacheOrDownload(Application.streamingAssetsPath + "/hot.u3d",...,因此不能用DLL方式做热更新(mono打包时,会自动将反射部分功能禁止) 相同点: 移动端做热更新都是使用Unity3D+lua插件或框架 热更新需要注意点: 资源、代码包括Lua代码都要达成...可读可写,没有任何内容限制,从服务器上下载AB资源,都会放到这个文件夹下进行热更新) 加载资源流程 开始游戏->读取本地版本号信息->去服务器指定地址下载服务器版本号信息->对比两个版本号信息->如果不一致

    1.9K20

    Asp.Net Mvc3.0(MEF依赖注入理论)

    让应用程序与扩展程序之间不产生直接依赖,这样也允许在多个具有同样扩展需求之间共享扩展程序。...MEF方式 MEF 提供一种通过“组合”隐式发现组件方法。 MEF 组件(称为“部件-Part”)。...每个扩展组件都会声明一个导出,而且还可能会声明导入。 通过这种方式,扩展组件本身是自动可扩展。...如何声明一个部件-导入和导出 导出”是部件向容器中其他部件提供一个值,而“导入”是部件向要通过可用导出满足容器提出要求。...为了使导入与导出匹配,导入和导出必须具有相同协定。 假设有一个类HomeController,它声明了可以导入插件类型是ITestRepository。

    70130
    领券