连接 MySQL/MongoDB/Postgres 等数据库时出现问题“无法加载文件或程序集..”

问题描述 投票:0回答:2

我正在尝试连接到 MySQL 数据库。 不幸的是我总是遇到这样的错误:

System.IO.FileNotFoundException: Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=5.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Das System kann die angegebene Datei nicht finden.
File name: 'System.Diagnostics.DiagnosticSource, Version=5.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
   at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken)
   at MySqlConnector.MySqlConnection.Open() in /_/src/MySqlConnector/MySqlConnection.cs:line 373
   at AdminTools.AdminToolsDatabase.Connect() in C:\Users\Milan\source\repos\AdminTools_Server\AdminTools_Server\AdminToolsDatabase.cs:line 30

“Das System kann die angegebene Datei nicht finden。”应该意味着“系统找不到指定的文件。”

using System;
using MySqlConnector;

namespace AdminTools
{
    class AdminToolsDatabase
    {
        private static string connectStr = @"server=127.0.0.1;uid=Adminii;pwd=123;database=server_db";
        private static MySqlConnection cnn = null;
        public AdminToolsDatabase()
        {
            cnn = new MySqlConnection(connectStr);
            Connect();
            Console.WriteLine("Connection established");
        }

        private bool Connect()
        {

            if(cnn != null || cnn.State != System.Data.ConnectionState.Open)
            {                
                try
                {
                    cnn.Open();
                    Console.WriteLine("connected.");                    
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error connect mysql");
                    Console.WriteLine(ex);
                }
            }
            return false;
        }
    }
}

哦,当我运行使用我的 dll 的程序时,我收到此错误。如果我对 mysql 连接器字符串使用无效的 props,它会给我一个错误。但是一旦我调用 cnn.Open();它崩溃了。

我尝试过使用较新和较旧版本的 mysql 连接器 - 但没有成功。 Mysql.Data 包也不起作用。 我还尝试使用 postgres 和 mongodb 代替。但我总是遇到同样类型的错误(只是有不同的 dll 名称)。 有什么想法吗?

(我也尝试过在4.6、4.7和4.8之间切换,但没有成功)

我将不胜感激任何帮助..因为我真的不想使用 MS SQL Server 2019..

c# mysql
2个回答
0
投票

这通常意味着项目的

System.Diagnostics.DiagnosticSource
文件夹中的
bin
版本与 MySqlConnector 引用的版本不同。

找出正在复制到您的

bin
文件夹中的版本,然后将绑定重定向(类似于以下内容)添加到您的项目的
Web.config
:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-5.0.0.1" newVersion="5.0.0.1" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

0
投票

如果您使用的是 Azure Functions,您可以尝试以下解决方法:

<ItemGroup>
  <FunctionsPreservedDependencies Include="System.Diagnostics.DiagnosticSource.dll" />
  <FunctionsPreservedDependencies Include="System.Text.Encoding.CodePages.dll" />
</ItemGroup>
© www.soinside.com 2019 - 2024. All rights reserved.