Skip to content

Instantly share code, notes, and snippets.

@arhughes
Created May 25, 2021 14:45
Show Gist options
  • Save arhughes/8b15d7ee88da250cc4492814cac6db52 to your computer and use it in GitHub Desktop.
Save arhughes/8b15d7ee88da250cc4492814cac6db52 to your computer and use it in GitHub Desktop.
Microsoft.Data.SqlClient crash in Mono
version: '3.7'
services:
mssql:
image: microsoft/mssql-server-linux:2017-latest
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=Password1!
app:
image: mono:6.6
volumes:
- .:/app
working_dir: /app
command: bash -c "msbuild /t:\"restore;rebuild\" && mono bin/Debug/net471/Test.exe"
depends_on:
- mssql
using System;
using Microsoft.Data.SqlClient;
namespace Test
{
class MainClass
{
public static void Main(string[] args)
{
try
{
using (var connection = new SqlConnection("Server=mssql;User Id=sa;Password=Password1!"))
{
connection.Open();
Console.WriteLine("Connection opened successfully.");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net471</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Data.SqlClient" Version="2.1.2" />
</ItemGroup>
</Project>
@arhughes
Copy link
Author

$ docker compose run app
[snip docker / msbuild output]
System.TypeInitializationException: The type initializer for 'Microsoft.Data.SqlClient.InOutOfProcHelper' threw an exception. ---> System.EntryPointNotFoundException: GetModuleHandle assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) Microsoft.Data.Common.SafeNativeMethods.GetModuleHandle(string)
  at Microsoft.Data.SqlClient.InOutOfProcHelper..ctor () [0x00006] in <c06d3e27a7d34019afc743cdbb48887b>:0
  at Microsoft.Data.SqlClient.InOutOfProcHelper..cctor () [0x00000] in <c06d3e27a7d34019afc743cdbb48887b>:0
   --- End of inner exception stack trace ---
  at Microsoft.Data.SqlClient.SqlConnectionString..ctor (System.String connectionString) [0x0000d] in <c06d3e27a7d34019afc743cdbb48887b>:0
  at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions (System.String connectionString, Microsoft.Data.Common.DbConnectionOptions previous) [0x00000] in <c06d3e27a7d34019afc743cdbb48887b>:0
  at Microsoft.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup (Microsoft.Data.Common.DbConnectionPoolKey key, Microsoft.Data.ProviderBase.DbConnectionPoolGroupOptions poolOptions, Microsoft.Data.Common.DbConnectionOptions& userConnectionOptions) [0x0003e] in <c06d3e27a7d34019afc743cdbb48887b>:0
  at Microsoft.Data.SqlClient.SqlConnection.ConnectionString_Set (Microsoft.Data.Common.DbConnectionPoolKey key) [0x00008] in <c06d3e27a7d34019afc743cdbb48887b>:0
  at Microsoft.Data.SqlClient.SqlConnection.set_ConnectionString (System.String value) [0x000b1] in <c06d3e27a7d34019afc743cdbb48887b>:0
  at Microsoft.Data.SqlClient.SqlConnection..ctor (System.String connectionString, Microsoft.Data.SqlClient.SqlCredential credential) [0x00006] in <c06d3e27a7d34019afc743cdbb48887b>:0
  at Microsoft.Data.SqlClient.SqlConnection..ctor (System.String connectionString) [0x00000] in <c06d3e27a7d34019afc743cdbb48887b>:0
  at (wrapper remoting-invoke-with-check) Microsoft.Data.SqlClient.SqlConnection..ctor(string)
  at Test.MainClass.Main (System.String[] args) [0x00002] in <14d249bf82924f15973816f6fb184b28>:0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment