C#学习教程:以程序集的非特定版本为目标我已将程序集属性上的选项特定版本设置为false,但是如果我尝试运行应用程序并且请求的程序集版本是以前的版本,我会得到一个:FileLoadException:Couldnotloadfileorassemblywhenthereferenceddll这种情况发生当版本与当前版本不完全匹配时。我认为问题是如何引用这个程序集。一般来说,如果您尝试使用特定版本的程序集,则以下内容并不适用,您应该只使用您需要的版本。但是,有时您会遇到以下情况:AssemblyX-引用AssemblyZ的1.2.1版AssemblyY-引用AssemblyZ的1.2.2版但是您的项目同时需要AssemblyX和AssemblyY。那么你如何解决这个问题呢?您可以将AssemblyZ的1.2.1和1.2.2放在GAC中,或者,如果您确定没有任何兼容性问题,则可以使用程序集重新绑定。这是一个示例(在您的Web.config或App.config文件中):这基本上是说,如果解决方案中的任何程序集引用myAssembly的1.0.0.0,它们实际上应该使用版本2.0.0.0。并且您的路径中应该有版本2.0.0.0。当您总是希望他们使用程序集的特定版本时,您可以使用的一个hack是指定一个版本范围,如下所示:这将强制MyAssembly的版本1.2.1.0用于引用0.0.0.0和3.0.0.0之间的MyAssembly任何版本的.到目前为止我发现的这个问题的唯一解决方案是:1)ILMergedll有一个我有的依赖项2)提供依赖项(在本例中是一个dll)3)不签署程序集,这将非常困难,因为我需要“取消签署”层次结构您可以同时拥有两个dll,并且可以使用bindingRedirect作为dotnet中的dll版本控制的链接,虽然以下App.Config代码示例是正确的,但您可能希望通过添加以下publisherPolicyassemblyBinding树中的apply="no"以阻止GAC策略覆盖您的意愿,这将导致所有程序集忽略GAC发布者策略,或者您可以将publisherPolicyapply="no"/>放在dependentAssembly树中,这只有该程序集的publisherPolicy将被传递。{//Thisappliestothewholeapplication-allreferences//Thisappliesonlytothisassembly}更多信息请参考:大家有用,需要多了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
