Tag: 程序集

从特定文件夹动态加载DLL?

目前,我有这个代码: var shellViewLibrary = Assembly.LoadFrom(Path.Combine(_DllsPath, _DllShellView)); IEnumerable types = shellViewLibrary.GetTypes(); foreach (Type type in types) { var typeIShellViewInterface = type.GetInterface(_NamespaceIShellView, false); if (typeIShellViewInterface != null) { //here } } 问题是,我在//here我想使用Activator.CreateInstance来创建一个type 在特定文件夹中的类型的对象(在构建文件夹之外)我尝试了大约20种不同的东西,其中大部分都是这样的: http://msdn.microsoft.com/en-us/library/d133hta4.aspx但没有效果……我尝试过的典型事情是: object MyObj = Activator.CreateInstance(shellViewLibrary.FullName, type.FullName); 要么 object MyObj = Activator.CreateInstance(Path.Combine(_DllsPath, _DllShellView), type.FullName); 我总是有不同的例外,最常见的是: XamlParseException 我觉得我没有以正确的方式使用Activator.CreateInstance和2个参数。 我该怎么办 ?

获取程序集而不实例化它们

我试图使用AppDomain.CurrentDomain.GetAssemblies()在CurrentDomain获取所有程序集以将其FullName写入DropDownList ,但是如果我不实例化它们,则在CurrentDomain GetAssemblies()返回的数组中看不到它们。 它们都作为参考和解决方案的Reference文件夹添加。 只有我能从GetAssemblies()获取它们才是我第一次实例化它们。 如何以简单和更通用的方式克服这个问题,而不是每次添加新的程序集等时实例化它们。 由于公司政策,我必须模糊图像的某些部分: 所有组件都在Reference文件夹中引用:

MEF CachedAssemblyCatalog – 延迟加载程序集

我对旧版本MEF中提供的示例中引入的CachedAssemblyCatalog类非常感兴趣 – 它允许加载仅包含导出数据而不是整个程序集的小型程序集,并且只在该程序CachedAssemblyCatalog部件加载时才加载完整程序集。需要。 我想在我的应用程序中使用此function,但我不确定此代码的稳定性/可靠性,以及是否有任何关于此function的未来计划。 是否计划很快成为MEF不可分割的一部分,或者根本不成为? 有没有人在他的应用程序中使用此代码并可以分享他的印象? 它稳定吗? 它是否按预期工作? 我对谷歌此类目录中几乎没有可用数据以及缓存样本不再出现在当前可用样本中的事实感到有点气馁。 任何输入将不胜感激。

将常量移动到单独的程序集

我有一个利用许多全局常量的项目。 最终我计划提取程序的某些部分并创建自己的程序集。 是否值得(或可能?)仅为全局常量(即GlobalConstants.dll)创建程序集,以便我可以在将来的程序集中使用此程序集? 这种方法可以帮助我减少编码,并且可以为项目中的常量保留相同的名称。

.Net 4 – 在程序集中包含自定义信息

我正在构建一个可扩展的应用程序,它将在运行时通过Assembly.LoadFile()加载其他程序集。 这些附加程序集将包含诸如WPF资源字典(皮肤等),普通资源(Resx)和/或插件类之类的东西。 程序集也可以不包含公共类,只包含资源或资源字典。 我正在寻找一种识别程序集的方法,如友好名称(如“附加外观”或“集成浏览器”),程序集的function类型(SkinsLibrary,SkinsLibrary | PluginLibrary等)和其他信息(如ConflictsWith(new [] {“SkinsLibrary”,“BrowserPlugin”)。 到目前为止,我在命名程序*.Skins.*.dll使用约定( *.Skins.*.dll等)。 在每个程序集中,我有一个空的虚拟类,它只是一个占位符,用于保存实际(程序集范围)信息的自定义类属性,但这感觉就像一个黑客。 是否有一些简化的标准方法来处理这个问题? 我正在开发中央加载器系统,我团队中的其他开发人员将开发这些额外的程序集,所以我想最小化约定和管道细节。

如何在一个项目中使用两个不同的Microsoft Interop程序集?

我想使用两个不同的Microsoft.Office.Interop程序集(版本11和12),具体取决于客户计算机上安装的Office版本。 我已经能够将这两个组件添加到我的项目中(我使用loccaly – 它们在我的bin文件夹中,在两个不同的子文件夹中),我在这个程序集上使用了别名,以便能够在我的项目中使用它们(别名分别是Excel11和Excel12)。 但不幸的是,当我尝试构建解决方案时,我收到警告: 无法解决“Microsoft.Office.Interop.Excel,Version = 12.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c”和“Microsoft.Office.Interop.Excel,Version = 11.0.0.0,Culture = neutral,PublicKeyToken”之间的冲突= 71e9bce111e9429c”。 任意选择“Microsoft.Office.Interop.Excel,Version = 12.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c”。

预加载程序集:引用,未引用,在需要之前不加载

我想在显示主窗体之前创建一个启动屏幕,显示单个assembly的加载。 我正在做的预加载: Assembly a = System.Reflection.Assembly.GetExecutingAssembly(); foreach (AssemblyName an in a.GetReferencedAssemblies()) { Assembly.Load(an); } 我有两个问题: 问题1: 某些程序集在预加载后加载,即使它们未包含在引用中: ‘x.vshost.exe’(Managed(v4.0.30319)):已加载’C:\ windows \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationFramework-SystemData \ v4.0_4.0.0.0__b77a5c561934e089 \ PresentationFramework-SystemData.dll’,跳过加载符号。 模块已经过优化,调试器选项“Just My Code”已启用。 ‘x.vshost.exe’(Managed(v4.0.30319)):已加载’C:\ windows \ Microsoft.Net \ assembly \ GAC_MSIL \ PresentationFramework.Aero \ v4.0_4.0.0.0__31bf3856ad364e35 \ PresentationFramework.Aero.dll’,跳过加载符号。 模块已经过优化,调试器选项“Just My Code”已启用。 我可以通过将程序集连接到引用来解决这个问题,但我不想这样做,因为编译器不强迫我。 问题2: 我正在使用telerik RadPadeView。 […]

Web.config中的程序集

我已经进行了大约一年的.NET开发,但我仍然不知道部分的用途是什么。 该部分的目的是什么? 我可以删除那里指定的程序集吗? 我问过团队中的一些高级开发人员,但他们只是告诉我忽略它。 有人可以给我一个很好的解释吗?

基于组件的体系结构:在运行时替换程序集

在运行时替换程序集是个好主意吗? 我可以遇到什么问题? 原始问题: StructureMap – 能够在运行时替换程序集 在Web和非Web应用程序中在运行时替换程序集有什么区别?

使用CreateInstance()发现“无法找到类型”错误

我正在尝试在C#项目中的连接实用程序中使用.CreateInstance() ,同时序列化XML。 .Unwrap()用于解包可序列化的返回类型,并获取我正在尝试创建的类型的实例。 String fileToLoad = @”D:\RPMOpen\svnCobra\conversion\aui\Model\bin\Debug\RPM_Model”; String file = Path.GetFileName(fileToLoad); AbstractResponseMessageData response = (AbstractResponseMessageData)Activator.CreateInstance(file, responseName).Unwrap(); 我在@”D:\RPMOpen\svnCobra\conversion\aui\Model\bin\Debug\RPM_Model”程序集@”D:\RPMOpen\svnCobra\conversion\aui\Model\bin\Debug\RPM_Model”加载正常,但由于responseName ARC_LOGONRS中的ARC_LOGONRS类型,我收到以下错误: 方法ConnectUtil.Execute中的错误:无法从程序集RPM_Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null加载类型ARC_LOGONRS 。 现在,这就是我遇到错误的原因: 我确实引用了错误中指定的程序集。 2.我的GAC中没有任何内容覆盖my /Debug文件夹中的.dll。 3.我确保我拥有.dll的正确版本。 4. .dll没有其他依赖项。 5.我的项目和.dll都有相同的目标平台。 6.我知道我正在引用程序集,好像我将ARCLOGON_RS放在我的代码中并将鼠标hover在它上面我看到了 类RPM.Model.Data.ARCLOGON_RS 我可以专注于它来看它的属性。 7.我已经清理并重建了两种解决方案。 8.类型确实有一个公共默认构造函数,类是public。 9. .dll位于参考节点中。 10.我确实将正确的程序集名称作为参数传递。 我的问题是,如果有人知道为什么我的项目可能会抛出这个错误,以及我如何修复它,因为我完全没有诊断。 非常感谢任何帮助。