Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 忽略与可执行文件位于同一文件夹中的assembly.dll_C#_.net_Assemblies_Gac_Mysql.data - Fatal编程技术网

C# 忽略与可执行文件位于同一文件夹中的assembly.dll

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,其中加载的文

我有一个.NET应用程序,如果我将MySql.Data.dll程序集与可执行文件放在同一个文件夹中,它就会崩溃,但如果我移动它,它就可以正常工作。同一文件夹中的不同可执行文件依赖于它,因此我需要将其保留在那里

如何使应用程序忽略此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>

**************例外文本**************

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,ICollection
1
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.Memoizer
2.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>