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

具有依赖关系的c# Activator.CreateInstanceFrom从GAC中选取了错误的版本

c# Activator.CreateInstanceFrom是一个用于动态创建对象实例的方法。它可以从全局程序集缓存(GAC)中选择并创建指定类型的对象。然而,在使用该方法时,如果从GAC中选择了错误的版本,可能会导致依赖关系错误。

依赖关系是指一个软件组件或模块依赖于其他组件或模块的情况。在c#开发中,依赖关系通常通过引用其他程序集来实现。当使用Activator.CreateInstanceFrom方法时,如果从GAC中选择了错误的版本,可能会导致以下问题:

  1. 编译错误:如果选择的程序集版本与代码中引用的类型不兼容,编译时会出现错误。
  2. 运行时错误:如果选择的程序集版本与代码中引用的类型不兼容,运行时会抛出异常,导致程序无法正常执行。

为了解决这个问题,可以采取以下步骤:

  1. 确认依赖关系:首先,需要确认代码中所使用的类型所依赖的程序集版本。可以查看代码中的引用,或者查阅相关文档。
  2. 确认GAC中的版本:然后,需要确认GAC中可用的程序集版本。可以使用Windows命令提示符或PowerShell命令来查看已安装的程序集版本。
  3. 更新引用:如果发现选择了错误的版本,可以尝试更新代码中的引用,以选择正确的程序集版本。可以使用Visual Studio等开发工具来更新引用。
  4. 版本管理:为了避免类似问题的再次发生,建议采用版本管理工具,如NuGet,来管理项目中使用的程序集版本。通过明确指定所需的版本,可以确保代码在不同环境中的一致性。

总结起来,c# Activator.CreateInstanceFrom方法是一个用于动态创建对象实例的方法。当从GAC中选择了错误的版本时,可能会导致依赖关系错误,可能会导致编译错误或运行时错误。为了解决这个问题,需要确认依赖关系、GAC中的版本,并更新引用。同时,建议采用版本管理工具来管理程序集版本。

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

相关·内容

.NET面试题系列 - .NET框架基础知识(2)

如果你在VS中选择新建一个Class Library,则编译后生成结果文件是dll文件,没有可执行程序,你也不能在VS中试图运行一个Class Library。...在 .NET Framework 早期版本中,默认位置为 %windir%\assembly。 有时候当安装某些应用程序时,也会触发安装程序将程序集放入GAC。...部署到GAC细节,参阅精通C#第14章以及https://msdn.microsoft.com/zh-cn/library/yf1d93sz.aspx。在全局程序集缓存中部署程序集必须具有强名称。...问:也就是说你可以把VS帮你引用所有参考都删了? 答:是。这个程序只需要基础类库。 问:那你都删了之后,Console类型哪里来? 答:mscorlib.dll里来。...,Web App世界,开源世界,依赖注入世界,以及nuget世界。

1.2K20

C#反射解析及使用.

1、对C#反射机制理解 2、概念理解后,必须找到方法去完成,给出管理主要语法 3、最终给出实用例子,反射出来dll中方法 参考: C#反射,MSDN编程指南 反射是一个程序集发现及运行过程,通过反射可以得到...在C#中,我们要使用反射,首先要搞清楚以下命名空间中几个类关系:     System.Reflection命名空间     (1)   AppDomain:应用程序域,可以将其理解为一组程序集逻辑容器...⑵如果程序集强名称没有正确指定或GAC中找不到,那么通过配置文件中元素指定URL来查找     ⑶如果没有指定强名称或是在GAC中找不到,CLR会探测特定文件夹:     假设你应用程序目录是...2,Assembly.LoadFrom()     这个方法指定路径来加载程序集,实际上这个方法被调用时候,CLR会打开这个文件,获取其中程序集版本,语言文化,公钥标记等信息,把他们传递给 Load...区别:     LoadFile 方法用来来加载和检查具有相同标识但位于不同路径中程序集。但不会加载程序依赖项。     LoadFrom 不能用于加载标识相同但路径不同程序集。

2K140

解决T4模板程序集引用五种方案

目录 一、添加程序集引用解决不了问题 二、将引用程序集安装到GAC 三、利用VSPublicAssemblies目录 四、指定程序集具体路径..." #> public class HelloWorld {} 但是这种方式对于VS 2010则行不通,因为T4引擎在解析和编译模板时候并不会项目引用列表中去定位目标程序集...所以,对于上面的T4模板,会出现如下编译错误。 ? 二、将引用程序集安装到GAC 其实我们有很多方式来解决这个问题,你首先想到肯定是将引用程序集安装到GAC中。...没错,这是一种解决方案,如果被引用程序集具有强签名的话。有一点需要注意是,T4模板引用某个安装于GAC程序集时候,在指令下不能指定文件扩展名(.dll)。...如果被引用程序集被没有被签名,GAC方式则不能使用,在这种情况下你需要指定程序集文件所在位置,最直接的当然就是指定程序集文件绝对路径。

79970

C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService(二)

共享程序集需要具有强名称(Strong Name)以确保唯一性,并且它版本号、文化等信息需要明确指定。...共享程序集是可以供多个应用程序共享使用,通常位于全局程序集缓存(GAC)中,需要具有强名称。共享程序集适用于需要代码重用和版本控制情况,而私有程序集适用于独立部署应用程序。56....GAC 解决了以下问题:1、程序集版本冲突当多个应用程序依赖于相同程序集,但这些应用程序使用不同版本时,可能会导致版本冲突。...GAC 允许在同一台计算机上存储不同版本程序集,确保每个应用程序使用其所需的确切版本。2、全局共享GAC 提供了一个全局、可供所有应用程序访问位置。...3、强命名(Strong Naming)GAC 要求程序集是强命名,即具有唯一名称、版本号、文化信息,并经过数字签名。强命名确保程序集唯一性,防止误用、篡改或冒充。

14410

Apriso 开发葵花宝典之传说完结篇GPM

,就会根据它们之间依赖关系为这些项建立正确传输顺序,最不依赖项首先出现。...依赖项自动添加到先前该项目生成不是“使用选择项生成” From Selection或“从来自修订生成” From Revision软件包中。...例如,在具有REV.001.001和REV.001.002版本实体之间,第二个版本将作为默认版本部署。...为每个功能领域使用单独项目,并将公共元素放入可用于许多功能领域单独项目中 在相互依赖项目之间创建依赖关系 当目标服务器需要更新时,检测更改并使用generate Latest changes选项...使用源存储库 :与subversion控制集成提供了对大多数类型项目的历史记录访问 依赖于包依赖关系 :包之间依赖关系是根据来自同一个项目的包顺序和项目之间依赖关系自动创建

16810

.NET 5重大改变:消失历史技术

全局程序集缓存 全局程序集缓存(GAC)背后理论是,所有.NET 库都可以存储在单个集中位置。在这种方式下,它与 COM 库类似。但与 COM 不同是,它可以存储每个库多个版本。...在新模型中,所有库依赖项都与应用程序一起部署,从而使得应用程序可以与其他.NET Core 应用程序隔离开来。因此,.NET Core 中没有 GAC 概念。...为了进一步明确意图,所有的 GAC API 现在都被标记为已过时,微软正考虑在未来版本中删除它们。...其基本思想是,危险 API 会被加上表示风险属性。IIS 之类主机可以配置为运行具有不同“信任”级别的应用程序,理论上讲,是将它们放入一个沙箱中。...应用程序信任级别部分取决于它是哪里加载,内部站点会获得更高权限。 但是和许多早期.NET 技术一样,要正确地实现 CAS 很困难。

41420

通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

目录 .NET和C#是什么关系 跨语言和跨平台是什么 什么是跨语言互操作,什么是CLS CLS异常 什么是CTS?...那么为了在vb调用c#程序集中避免这些因语言差异性而导致错误,在编写c#代码时候 就应该提前知道vb中这些规则,来应付式开发。...比如: A程序集引用了 C盘:\Newtonsoft.Json 6.0程序集 B程序集引用了 Nuget下载下来Newtonsoft.Json 10.0程序集 此时A引用B,就会报:发现同一依赖程序集不同版本间存在无法解决冲突...以上就是为何Newtonsoft.Json版本不一致会导致错误原因,其也诠释了CLR搜索程序集一个过程。 那么,如果我执意如此,有什么好解决方法能让程序顺利执行呢?有,有2个方法。...既然是共享存放位置,那不可避免会遇到文件名重复情况,那么为了杜绝该类情况,规定在GAC中只能存在强名称程序集,每当CLR要加载强名称程序集时,会先通过标识去GAC中查找,而考虑到程序集文件名称一致但版本文化等复杂情况

2.7K63

关于强命名程序集

这里只 有一个目录表明只有一个版本 GCFWK 程序集被安装。实际程序集保存在每一个对应版本目录下。...如果你试图把弱命名程序集加入到 GAC 中,会收到错误信息: ”    Failure adding assembly to the cache: Attempt to install an assembly...首先, GAC 使得很多程序可以共享程序集,这整体上减少了使用物理内存;其次,我们很容易将一个新版程序集部署到  GAC 中,并通过一种发布者策略(差不多就是一种重定向方法,比如将原来引用版本为...1.0.0.0 程序集程序,通过更改它配置文件,转而让程序去引用版本为 2.0.0.0 程序集)来使用新版本;最后, GAC 还提供了对不同版本程序集并存( side-by-side...强命名策略: 生成公钥与私钥对,并 对私钥做严格保护 生成:sn -k keyfile.snk 公钥与私钥对 抽取公钥:sn -p keyfile.snk public.snk keyfile中抽取公钥保存到

62210

使用presentationhost.exe绕过AppLocker白名单限制

注意,xbap可以请求不同权限级别。为了执行潜在恶意操作,应用程序必须请求文件位置(即本地文件系统或网络共享)打开XBAP时可以执行非限制性权限。...如果你点击运行,你默认浏览器将会打开.xbap文件。如果你默认浏览器不是IE,那么你需要将file:/// URL默认浏览器地址栏复制到IE上打开。...这里我将使用C#Pipeline类来运行PowerShell命令(有趣是,以这种方式运行PowerShell命令可以绕过约束语言模式)。...此错误是Presentationhost沙箱在告诉你,应用程序试图在它权限级别之上执行某些操作,有关xbap安全性更多介绍请参阅此处。...要使xbap请求具有完全信任权限(即对操作系统非沙盒访问),请到Project -> Properties -> Security下选择“This is a full trust application

1.8K20

通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

.NET和C#是什么关系 语言,是人们进行沟通表达主要方式。...那么为了在vb调用c#程序集中避免这些因语言差异性而导致错误,在编写c#代码时候 就应该提前知道vb中这些规则,来应付式开发。 ...此时A引用B,就会报:发现同一依赖程序集不同版本间存在无法解决冲突 这一警告。...以上就是为何Newtonsoft.Json版本不一致会导致错误原因,其也诠释了CLR搜索程序集一个过程。 那么,如果我执意如此,有什么好解决方法能让程序顺利执行呢?...既然是共享存放位置,那不可避免会遇到文件名重复情况,那么为了杜绝该类情况,规定在GAC中只能存在强名称程序集,每当CLR要加载强名称程序集时,会先通过标识去GAC中查找,而考虑到程序集文件名称一致但版本文化等复杂情况

4K30

.NET面试题系列 - .NET框架基础知识(1)

版本.NET框架要传输给我们理念是:这是一个跨平台,开源框架。一切都是依赖注入,一切都是nuget,开发彻底组件化,能解耦全都解耦。...所以你不需要在你工程中手动引用任何基础类库,它们会被自动引用。如果你GAC中删除了mscorlib.dll,你IDE将变成一个什么都不懂白痴。...图片来自CLR via C#。 1.5 为什么说.NET是平台无关? .NET程序集可以在非微软操作系统如Mac OS,各种版本Linux,以及iOS和Android移动设备上开发和执行。....CLR中一个名为Class loader(类加载程序)组件负责这项工作。它会GAC、配置文件、程序集元数据中寻找这个类型,然后将它类型信息加载到内存中数据结构中。...如果出现了问题,则触发运行时错误。以后对方法所有调用都以本地代码形式全速运行,无须重新检查。 2.3 本地代码优化 CLRJIT编译器会对本地代码进行优化。

1.7K10

.Net知识大全(个人整理)

1.NET和C#是什么关系?...把流程当前页面引导到另一个页面中,新页面使用前一个页面的应答流 数据库稳定,安全,但性能相对弱 63.请指出GAC含义?...这样,很多程序就可以GAC里面取得Assembly,而不需要再把所有要用到Assembly都拷贝到应用程序执行目录下面。 64.向服务器发送请求有几种方式? 答:get,post。...98..net错误处理机制是什么? 答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配Catch为止。...方法覆盖是子类和父类之间关系,是垂直关系;方法重载是同一个类中方法之间关系,是水平关系 覆盖是一个方法或一对方法产生关系;方法重载是多个方法之间关系

1.2K20

SYSLIB0005:不支持全局程序集缓存 (GAC)

.NET Core 和 .NET 5 及更高版本消除了 .NET Framework 中存在全局程序集缓存 (GAC) 这一概念。...为帮助开发人员摒弃这些 API, .NET 5 开始,一些 GAC 相关 API 标记为已过时。 使用这些 API 会在编译时生成警告 SYSLIB0005。...以下与 GAC 相关 API 标记为已过时: Assembly.GlobalAssemblyCache 库和应用不应使用 GlobalAssemblyCache API 来确定运行时行为,因为它在 ....如果在运行时使用 GlobalAssemblyCache 值在“GAC程序集”流与“不在 GAC程序集”流之间进行选择,请重新考虑流对于 .NET 5+ 应用程序是否仍然有意义。...如果必须使用过时 API,并且 SYSLIB0XXX 诊断没有显示为错误,则可以在代码或项目文件中取消该警告。

44720

oracle odp.net 32位64位版本问题

(比如win2008 r2),开发工具又是最先进vs.net 2010 sp1,但是死活在代码就是连接不上oracle,一直报一些奇怪错误:比如“Data Provider找不到”啦,“Oracle.DataAccess.Client...(我今天花了近一上午时间才弄明白问题所在) odp.net安装后,默认会在GAC中部署程序集Oracle.DataAccess,如果你安装是x86版本GAC就是x86;如果你安装x64版本,...GAC就是AMD64版本。 ...检测本机GAC中是否有Oracle.DataAccess程序集并查看版本方法如下: 在vs.net命名行窗口下,输入gacutil.exe /l Oracle.DataAccess 如果看到类似下面的结果...,可以不用依赖于listener.ora文件中配置 string _connString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(

1.4K60

使用C#创建SQLite控制台应用程序

一、开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 二、前言 之前使用是软件Access...三、SQLite下载 1、由于是基于.NETC#编程,需下载System.Data.SQLite.dll来进行引用,下载网址如下: http://system.data.sqlite.org/index.html...,而非加密版本就没有此问题,因此,可以使用Navicat For SQLite来对非加密SQLite数据操作,但如果需要使用加密SQLite数据库,推荐使用SQLite Studio,因为它生成加密版本...2、在“SQLiteTest”项目中右键点击“引用”,在弹出上下文菜单中选择“添加引用(R)”,如下图所示: ?...3、将路径为“C:\Program Files (x86)\System.Data.SQLite\2010\GAC\System.Data.SQLite.dll”引用添加进来,如下图所示: ?

2.4K00

CLR中程序集加载

CLR中程序集加载       本次来讨论一下基于.net平台CLR中程序集加载机制:   【注:由于.net已经开源,可利用vs2015查看c#源码具体实现】 在运行时,JIT编译器利用程序集...3.采用AssemblyLoadFile方法,这个方法可以任意路径加载一个程序集,并可将具有相同标识一个程序集多次加载到一个AppDoamin中。...,代码必须向AppDomainAssemblyReaolve事件登记,并让事件回调方法显示加载依赖程序集。      ...,文件强名称标识不会获取,也不会在GAC和其他位置搜索文件。...ReflectionOnlyLoad方法会在GAC、应用程序基目录、私有路径和codebase指定位置搜索指定程序集,该方法不会应用版本控制策略,因此在指定是那个版本,获取就是那个版本

97680

程序员级别鉴定书(.NET面试问答集锦)

面向对象:强调对具有相同行为和属性事物封装,更注重封装完整性和功能完整性。 面向方面:主要提供与业务逻辑无关操作。...通过签发具有强签名程序集合,可以确保名称全局唯一性!因为强名称是依赖于唯一密钥对来确保名称唯一性,其他人不会生成与你相同程序集名称(不同私钥产生名称不同)。...强名称保护程序集版本沿袭,因为强名称唯一性能够确保没有其他人能够生成你程序集后续版本。...GAC程序集拥有FullTrust吗? FullTrust即为完全信任,也称为盲目信任. GAC:有FullTrust权限 代码加上需要安全权限特性有什么好处?...override new在基类没有virtual关键字情况下必须使用。副作用是破坏了继承关系

1.7K70
领券