【发布时间】:2016-11-24 18:48:47
【问题描述】:
如果我将 MySql.Data.dll 程序集与可执行文件放在同一文件夹中,我有一个 .NET 应用程序会崩溃,但如果我移动它,它可以正常工作。同一文件夹中的不同可执行文件依赖于它,因此我需要将其保留在那里。
我该怎么做才能让应用忽略这个 dll? 我假设我可以编辑配置文件,但我似乎找不到任何人有忽略本地 .dll 的问题,所以我不知道该写什么。
让我更加困惑的是关于加载程序集的部分写在异常的细节中。请注意,本地文件夹中的文件(我想忽略的那个)的版本是 6.9.9.0,异常状态是它要加载 6.9.5.0,而加载的文件(来自 GAC)是 6.9.8.0。
这是我的配置文件:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="DB" connectionString="*" providerName="System.Data.EntityClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
非常感谢您的帮助。
************** Loaded Assemblies **************
---------------------------------------
MySql.Data
Assembly Version: 6.9.8.0
Win32 Version: 6.9.8.0
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/MySql.Data/v4.0_6.9.8.0__c5687fc88969c44d/MySql.Data.dll
----------------------------------------
**************异常文本**************
System.IO.FileLoadException:无法加载文件或程序集 'MySql.Data,版本=6.9.5.0,文化=中性, PublicKeyToken=c5687fc88969c44d' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (来自 HRESULT 的异常:0x80131040) 文件名:'MySql.Data,版本=6.9.5.0,文化=中性,PublicKeyToken=c5687fc88969c44d' 在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName 文件名,字符串代码库,证据 assemblySecurity,RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for Introspection, Boolean 抑制安全检查) 在 System.Reflection.RuntimeAssembly.nLoad(AssemblyName 文件名,字符串代码库,证据 assemblySecurity,RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for Introspection, Boolean 抑制安全检查) 在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,证据 assemblySecurity,RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for Introspection, Boolean 抑制安全检查) 在 System.Reflection.Assembly.Load(AssemblyName assemblyRef) 在 System.Data.Metadata.Edm.MetadataAssemblyHelper.SafeLoadReferencedAssembly(AssemblyName 组件名称) 在 System.Data.Metadata.Edm.MetadataAssemblyHelper.d__8.MoveNext() 在 System.Data.Metadata.Edm.DefaultAssemblyResolver.GetAllDiscoverableAssemblies() 在 System.Data.Metadata.Edm.DefaultAssemblyResolver.GetWildcardAssemblies() 在 System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources(字符串 assemblyName, String resourceName, ICollection
1 uriRegistry, MetadataArtifactAssemblyResolver resolver) at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(String path, ExtensionCheck extensionCheck, String validExtension, ICollection1 uriRegistry, MetadataArtifactAssemblyResolver 解析器) 在 System.Data.Metadata.Edm.MetadataArtifactLoader.Create(字符串路径, ExtensionCheck extensionCheck, String validExtension, ICollection1 uriRegistry, MetadataArtifactAssemblyResolver resolver) at System.Data.Metadata.Edm.MetadataCache.SplitPaths(String paths) at System.Data.Common.Utils.Memoizer2.c__DisplayClass4_0.b__0() 在 System.Data.Common.Utils.Memoizer2.Result.GetValue() at System.Data.Common.Utils.Memoizer2.Evaluate(TArg arg) 在 System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(布尔 初始化所有集合) 在 System.Data.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection() 在 System.Data.Objects.ObjectContext..ctor(EntityConnection 连接,布尔 isConnectionConstructor) 在 Panola.Data.Models.PanolaDB..ctor() 在 Panola.Data.Services.PanolaConfigurator..ctor(字符串名称,布尔值 UseDefualtRepositories) 在 Panola.Data.Services.PanolaConfigurator..ctor(字符串名称) 在 Panola.Tools.Configurator.MainForm.connectToolStripMenuItem_Click(对象 发件人,EventArgs e) 在 System.Windows.Forms.ToolStripItem.RaiseEvent(对象键,EventArgs e) 在 System.Windows.Forms.ToolStripMenuItem.OnClick (EventArgs e) 在 System.Windows.Forms.ToolStripItem.HandleClick (EventArgs e) 在 System.Windows.Forms.ToolStripItem.HandleMouseUp (MouseEventArgs e) 在 System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType 遇到) 在 System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e,ToolStripItemEventType 遇到) 在 System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea) 在 System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea) 在 System.Windows.Forms.Control.WmMouseUp(消息和 m,MouseButtons 按钮,Int32 点击) 在 System.Windows.Forms.Control.WndProc(消息和 m) 在 System.Windows.Forms.ScrollableControl.WndProc(消息和 m) 在 System.Windows.Forms.ToolStrip.WndProc(消息和 m) 在 System.Windows.Forms.ToolStripDropDown.WndProc(消息和 m) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(消息& m) 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(消息和 m) 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
【问题讨论】:
-
您能分享您的
app.config或web.config文件吗? -
<?xml version="1.0"?> <configuration> <connectionStrings> <add name="DB" connectionString="*" providerName="System.Data.EntityClient" /> </connectionStrings> <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
标签: c# .net assemblies gac mysql.data