C# 忽略与可执行文件位于同一文件夹中的assembly.dll
我有一个.NET应用程序,如果我将MySql.Data.dll程序集与可执行文件放在同一个文件夹中,它就会崩溃,但如果我移动它,它就可以正常工作。同一文件夹中的不同可执行文件依赖于它,因此我需要将其保留在那里 如何使应用程序忽略此dll? 我假设我可以编辑配置文件,但我似乎找不到有忽略本地.dll问题的人,所以我不知道该写什么 更让我困惑的是,在异常的细节中写的关于加载程序集的部分。请注意,本地文件夹中的文件(我要忽略的文件)版本为6.9.9.0,异常状态表示它要加载6.9.5.0,其中加载的文件(来自GAC)为6.9.8.0 这是我的配置文件:C# 忽略与可执行文件位于同一文件夹中的assembly.dll,c#,.net,assemblies,gac,mysql.data,C#,.net,Assemblies,Gac,Mysql.data,我有一个.NET应用程序,如果我将MySql.Data.dll程序集与可执行文件放在同一个文件夹中,它就会崩溃,但如果我移动它,它就可以正常工作。同一文件夹中的不同可执行文件依赖于它,因此我需要将其保留在那里 如何使应用程序忽略此dll? 我假设我可以编辑配置文件,但我似乎找不到有忽略本地.dll问题的人,所以我不知道该写什么 更让我困惑的是,在异常的细节中写的关于加载程序集的部分。请注意,本地文件夹中的文件(我要忽略的文件)版本为6.9.9.0,异常状态表示它要加载6.9.5.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>
**************例外文本************** System.IO.FileLoadException:无法加载文件或程序集 'MySql.Data,版本=6.9.5.0,区域性=neutral, PublicKeyToken=c5687fc88969c44d'或其依赖项之一。这个 定位程序集的清单定义与程序集不匹配 参考资料。(来自HRESULT的异常:0x8013100) 文件名:“MySql.Data,版本=6.9.5.0,区域性=neutral,PublicKeyToken=c5687fc88969c44d” 位于System.Reflection.RuntimeAssembly.\u nLoad(AssemblyName文件名、字符串代码基、证据assemblySecurity、RuntimeAssembly 位置提示、堆栈爬网标记和堆栈标记、IntPtr PPRIVOSTBINDER、, 布尔throwOnFileNotFound,布尔用于内省,布尔 抑制安全检查) 位于System.Reflection.RuntimeAssembly.nLoad(AssemblyName文件名、字符串代码基、证据assemblySecurity、RuntimeAssembly 位置提示、堆栈爬网标记和堆栈标记、IntPtr PPRIVOSTBINDER、, 布尔throwOnFileNotFound,布尔用于内省,布尔 抑制安全检查) 位于System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef、证据assemblySecurity、RuntimeAssembly reqAssembly、, stackcrawmark和stackMark,IntPtr pPrivHostBinder,布尔值 throwOnFileNotFound,用于内省的布尔值,布尔值 抑制安全检查) 在System.Reflection.Assembly.Load处(AssemblyName assemblyRef) 位于System.Data.Metadata.Edm.MetadataAssemblyHelper.SafeLoadReferenceAssembly(AssemblyName 汇编名称) 在System.Data.Metadata.Edm.MetadataAssemblyHelper.d_u8.MoveNext()中 在System.Data.Metadata.Edm.DefaultAssemblyResolver.GetAllDiscoverableAssemblies()中 位于System.Data.Metadata.Edm.DefaultAssemblyResolver.GetWildcardAssemblys()处 位于System.Data.Metadata.Edm.MetadataArtificatLoaderCompositeResource.LoadResources(字符串 assemblyName、字符串resourceName、ICollection
1、注册表、,
MetadataArtifactAssemblyResolver(分解程序)
位于System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(字符串
路径、ExtensionCheck ExtensionCheck、字符串validExtension、,
ICollection
1 uriRegistry,MetadataArtifactAssemblyResolver解析程序)
在System.Data.Metadata.Edm.MetadataArtifactLoader.Create(字符串路径,
ExtensionCheck ExtensionCheck,字符串validExtension,ICollection1
uriRegistry,MetadataArtifactAssemblyResolver(分解程序)
位于System.Data.Metadata.Edm.MetadataCache.SplitPath(字符串路径)
在System.Data.Common.Utils.Memoizer中
2.c\u DisplayClass4\u 0.b\u 0()
在System.Data.Common.Utils.Memoizer2.Result.GetValue()中
在System.Data.Common.Utils.Memorizer中
2.评估(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.panolaConfiguration..ctor(字符串名称)
在Panola.Tools.Configurator.MainForm.connectToolStripMenuItem\u单击(对象
发送方,事件参数(e)
位于System.Windows.Forms.ToolStripItem.RaiseEvent(对象键,事件参数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 met)
在System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs-mea)中
在System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)中
在System.Windows.Forms.Control.WmMouseUp(Message&m、MouseButtons按钮、Int32单击)
位于System.Windows.Forms.Control.WndProc(Message&m)
在System.Windows.Forms.ScrollableControl.WndProc(Message&m)中
在System.Windows.Forms.ToolStrip.WndProc(Message&m)中
在System.Windows.Forms.ToolStripDropDown.WndProc(Message&m)中
在System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)中
在System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)中
在System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)中
这里的问题是程序集绑定;它尝试多个位置,包括本地文件夹和GAC。这是很难抑制的。然而,我怀疑这里最好的选择是在配置文件中添加一个程序集绑定重定向,告诉“fusion”允许6.9.9.0代替以前的版本。例如:
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" />
<bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>
这里的问题是程序集绑定;它尝试多个位置,包括本地文件夹
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" />
<bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>