Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
在macOS上嵌入.NET内核的Firebird_.net_Database_.net Core_Firebird_Firebird Embedded - Fatal编程技术网

在macOS上嵌入.NET内核的Firebird

在macOS上嵌入.NET内核的Firebird,.net,database,.net-core,firebird,firebird-embedded,.net,Database,.net Core,Firebird,Firebird Embedded,我正试图让Firebird嵌入到一个简单的.NET核心(2.1)控制台应用程序场景中 我的项目文件如下所示: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup

我正试图让Firebird嵌入到一个简单的.NET核心(2.1)控制台应用程序场景中

我的项目文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="FirebirdSql.Data.FirebirdClient" Version="6.4.0" />
  </ItemGroup>

</Project>
using System;
using System.IO;
using FirebirdSql.Data.FirebirdClient;

namespace Playground
{
    class Program
    {
        static void Main(string[] args)
        {
            var workingDir = Directory.GetCurrentDirectory();
            var dbPath = Path.Combine(workingDir, "Database.fdb");

            var connString = 
                new FbConnectionStringBuilder
                {
                    ClientLibrary = "libfbclient.dylib",
                    ServerType = FbServerType.Embedded,
                    UserID = "sysdba",
                    Database = dbPath
                }
                .ToString();

            Console.WriteLine(connString);

            FbConnection.CreateDatabase(connString, false);

            var sql =
                @"
                CREATE TABLE my_table (
                    id int NOT NULL PRIMARY KEY,
                    name varchar(20) NOT NULL
                );
                ";

            using (var conn = new FbConnection(connString))
            using (var cmd = new FbCommand(sql, conn))
            {
                conn.Open();
                cmd.ExecuteNonQuery();
            }
        }
    }
}
构建项目后(仅通过
dotnet build
),我将以下文件从Mac二进制软件包(
Firebird-3.0.4-33054-lipo-x86_64.pkg
)复制到输出目录(
/bin/Debug/netcoreapp2.1
):

运行应用程序(
dotnet MyApp.dll
)时,我遇到一个异常:

Unhandled Exception: FirebirdSql.Data.FirebirdClient.FbException: Unable to complete network request to host "localhost".
Failed to establish a connection. ---> FirebirdSql.Data.Common.IscException: Unable to complete network request to host "localhost".
Failed to establish a connection.
   at FirebirdSql.Data.Client.Native.FesDatabase.ProcessStatusVector(IntPtr[] statusVector) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Native\FesDatabase.cs:line 332
   at FirebirdSql.Data.Client.Native.FesDatabase.CreateDatabase(DatabaseParameterBuffer dpb, String dataSource, Int32 port, String database, Byte[] cryptKey) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Native\FesDatabase.cs:line 171
   at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.CreateDatabase(DatabaseParameterBuffer dpb) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionInternal.cs:line 125
   at FirebirdSql.Data.FirebirdClient.FbConnection.CreateDatabaseImpl(String connectionString, Int32 pageSize, Boolean forcedWrites, Boolean overwrite) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.cs:line 101
   --- End of inner exception stack trace ---
   at FirebirdSql.Data.FirebirdClient.FbConnection.CreateDatabaseImpl(String connectionString, Int32 pageSize, Boolean forcedWrites, Boolean overwrite) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.cs:line 106
   at Playground.Program.Main(String[] args) in /Users/anil/Temp/Playground/Program.cs:line 24
在过去的15年里,我已经在许多场景(网络服务器、嵌入式)和不同的技术(Delphi、.NET、.NET核心)中成功地使用了Firebird,尽管只是在Windows上


有没有人能帮助解决这个问题,或者给我指出一个相关的地方,在那里我可以RTFM并自己解决这个问题?

你想在哪个版本的MacOS上运行这个问题?@EdMendez 10.13.6(High Sierra)我在这个问题上取得了一些进展:显然,由于库路径,嵌入式引擎未加载,正在尝试连接到
localhost
。修补
dylib
s没有帮助。在安装Firebird(它已将LIB放在预期的位置)并授予
/tmp/Firebird
目录的权限后,它工作了,但这远远不是我想要实现的无摩擦和孤立的部署场景(在windows上是可能的)。
Unhandled Exception: FirebirdSql.Data.FirebirdClient.FbException: Unable to complete network request to host "localhost".
Failed to establish a connection. ---> FirebirdSql.Data.Common.IscException: Unable to complete network request to host "localhost".
Failed to establish a connection.
   at FirebirdSql.Data.Client.Native.FesDatabase.ProcessStatusVector(IntPtr[] statusVector) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Native\FesDatabase.cs:line 332
   at FirebirdSql.Data.Client.Native.FesDatabase.CreateDatabase(DatabaseParameterBuffer dpb, String dataSource, Int32 port, String database, Byte[] cryptKey) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\Client\Native\FesDatabase.cs:line 171
   at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.CreateDatabase(DatabaseParameterBuffer dpb) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnectionInternal.cs:line 125
   at FirebirdSql.Data.FirebirdClient.FbConnection.CreateDatabaseImpl(String connectionString, Int32 pageSize, Boolean forcedWrites, Boolean overwrite) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.cs:line 101
   --- End of inner exception stack trace ---
   at FirebirdSql.Data.FirebirdClient.FbConnection.CreateDatabaseImpl(String connectionString, Int32 pageSize, Boolean forcedWrites, Boolean overwrite) in C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.cs:line 106
   at Playground.Program.Main(String[] args) in /Users/anil/Temp/Playground/Program.cs:line 24