可收集ALC問題[Microsoft.Data.SqlClient is not supported on this platform.]


異常

Microsoft.Data.SqlClient is not supported on this platform.

堆棧跟蹤

    at Microsoft.Data.SqlClient.SqlConnection..ctor(String connectionString)

    at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerConnection.CreateDbConnection()

    at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.get_DbConnection()

    at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.<OpenAsync>d__47.MoveNext()

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.<BeginTransactionAsync>d__38.MoveNext()

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.<BeginTransactionAsync>d__36.MoveNext()

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.<ExecuteAsync>d__8.MoveNext()

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.<ExecuteAsync>d__8.MoveNext()

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.<SaveChangesAsync>d__97.MoveNext()

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.<SaveChangesAsync>d__101.MoveNext()

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.<ExecuteAsync>d__7`2.MoveNext()

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    at Microsoft.EntityFrameworkCore.DbContext.<SaveChangesAsync>d__54.MoveNext()

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

    at TM.Framework.Repository.EFCore.Repository`2.<InsertAsync>d__15.MoveNext() in F:\Personal\Project\Git\Repos\WM\TM.Framework.Repository\DbCore\EFCore\Repository.cs:line 51

    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()

 

 

任務調度創建可收集ACL后,加載任務程序集運行時,執行EF時報異常,且明確指出Microsoft.Data.SqlClient程序集不支持該平台,經測試.Net Core 3.1的網站(aspnet core)和控制台程序,在運行時會自動選用runtime文件夾下的對應dll,即AssemblyLoadContext.Default中加載的分別為:

 

文件名稱:(asp.net core)

\bin\Release\netcoreapp3.1\runtimes\win\lib\netcoreapp2.1\Microsoft.Data.SqlClient.dll

文件大小:1227736 字節

文件版本:1.0.19269.1

修改時間:2019年9月26日 20:43:26

MD5     :0FE582BD41A492D8D583E60AB559EC93

SHA1    :A935CAE85E421960A617FDFAA57738E2A0ACEEF9

CRC32   :A7500F80

 

文件名稱:(.net core console)

\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp2.1\Microsoft.Data.SqlClient.dll

文件大小:1227736 字節

文件版本:1.0.19269.1

修改時間:2019年9月26日 20:43:26

MD5     :0FE582BD41A492D8D583E60AB559EC93

SHA1    :A935CAE85E421960A617FDFAA57738E2A0ACEEF9

CRC32   :A7500F80

 

由於任務調度程序加載dll時是從運行目錄中尋找並不會查看runtime文件夾,因此導致當前目錄里的同名dll被加載,因此拋出開頭的異常。

 

文件名稱:(運行目錄)

\bin\Debug\netcoreapp3.1\Microsoft.Data.SqlClient.dll

文件大小:330712 字節(偏小)

文件版本:1.0.19269.1

修改時間:2019年9月26日 20:43:28

MD5     :5715D2FA9EDF8C80D8B1209F9C7D3624

SHA1    :993D17482A5ED75CC78E4E6302934DA0D24DAE0D

CRC32   :FC165A30

 

總結:

復制\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp2.1\Microsoft.Data.SqlClient.dll里的dll到任務程序的根目錄即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM