当前位置: 首页 > 编程语言 > C#

有没有办法强制使用DLL版本?分享

时间:2023-04-10 14:36:19 C#

有没有办法强制使用DLL版本?有没有办法强制使用特定的DLL版本?来自app.config?(背景故事)我们正在使用SQLCompact3.5,由于业务原因(据我所知)暂时无法迁移到SQLCompact3.5SP1。我们的构建目录中有System.Data.SqlServerCe和所有非托管dll,但如果安装了SP1,应用程序将加载并使用SP1托管dll(并且推而广之,我假设也是非托管dll)。pre-sp1dll的版本号是3.5.0.0,sp1版本是3.5.1.0我已经将System.Data.SqlServerCe的引用设置为CopyLocal=true和SpecificVersion=true但它仍然使用SP1版本,即使sp1之前的版本在我们的构建目录中(假设它使用的是GAC)。我试过添加对GAC的引用,以及手动进入文件系统并直接引用dll。(说明一下,客户端正在为需要它的其他软件安装服务包,但即使安装了服务包,我们仍然需要运行pre-sp1版本)有没有办法强制.net使用我们在构建目录中的那个?更新:我像这个问题一样在应用程序配置中添加了一个覆盖,但是运行程序集绑定日志查看器给我:日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:C:ProjectsConsoleApplication11binDebugConsoleApplication11.exe.Config日志:使用来自C:WindowsMicrosoft.NETFrameworkv2.0.50727configmachine.config.LOG的机器配置文件:在应用程序配置文件中找到重定向:3.5.0.0重定向到3.5.0.0。日志位于发布者:WindowsassemblyGAC_MSILpolicy.3.5.System.Data.SqlServerCe3.5.0.0__89845dcd8080cc91publisher.config。日志:发现发布者策略文件重定向:3.5.0.0重定向到3.5.1.0。System.Data.SqlServerCe,Version=3.5.1.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91,processorArchitecture=MSILLOG:通过查看G找到程序集交流电。LOG:绑定成功。从C:WindowsassemblyGAC_MSILSystem.Data.SqlServerCe3.5.1.0__89845dcd8080cc91System.Data.SqlServerCe.dll返回程序集。日志:程序集在默认加载上下文中加载。看起来像GAC中3.5.1程序集的配置重写它有没有办法从我的app.config中强制它来解决问题?我找到了解决办法。查看Henk的回答(此处)中的链接和融合日志的输出,似乎3.5SP1安装程序安装了一个发布者策略文件,该文件强制加载sp1dll,即使在请求pre-sp1dll时也是如此。将其放入您的app.config中会告诉.net忽略发布者策略并最终使用3.5.0.0版:听起来您在项目中引用的是3.5.1.0版。如果3.5.1.0列在项目的引用下,我会尝试删除对3.5.1.0的引用,然后直接引用您要使用的3.5.0.0dll。但是,如果服务器已升级到SP1,则不建议以旧的dll为目标(尽管从API的角度来看,服务包仍应保持向后兼容性)。以上是C#学习教程:有没有办法强制使用DLL版本?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: