我正在尝试连接到 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..
这通常意味着项目的
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>
如果您使用的是 Azure Functions,您可以尝试以下解决方法:
<ItemGroup>
<FunctionsPreservedDependencies Include="System.Diagnostics.DiagnosticSource.dll" />
<FunctionsPreservedDependencies Include="System.Text.Encoding.CodePages.dll" />
</ItemGroup>