在.NET Core中使用SqlClient时,为什么会为System.Runtime.InteropServices程序集获取System.IO.FileLoadException?

时间:2017-06-05 15:03:32

标签: c# .net .net-core sqlclient

我开发了一个.NET Core应用程序。 该解决方案包括来自库的netstandard1.6和控制台应用程序netcoreapp1.1。 这两个项目都使用SqlClient。 如果我在Windows上发布并运行,那么一切都会顺利进行。 如果我在Linux上运行,那么应用程序崩溃并发生错误:

  

未处理的异常:System.Data.SqlClient.SqlException:A   建立时发生与网络相关或特定于实例的错误   与SQL Server的连接。服务器未找到或未找到   无障碍。验证实例名称是否正确以及SQL   服务器配置为允许远程连接。 (提供者:TCP   提供者,错误:35 - 捕获了内部异常)--->   System.AggregateException:发生一个或多个错误。 (类型   'System.Runtime.Versioning.BinaryCompatibility'的初始化程序投掷   一个例外。)---> System.TypeInitializationException:类型   'System.Runtime.Versioning.BinaryCompatibility'的初始化程序投掷   一个例外。 ---> System.IO.FileLoadException:无法加载文件   或程序集'System.Runtime.InteropServices ,版本= 4.1.1.0,   Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'。位于   程序集的清单定义与程序集引用不匹配。   (HRESULT异常:0x80131040)

PS:事实上,服务器可用,您可以从刚刚在Linux上创建的应用程序连接到它。

dotnet --info
Product Information:
Version:            1.0.4
Commit SHA-1 hash:  af1e6684fd

Runtime Environment:
OS Name:     ubuntu
OS Version:  16.04
OS Platform: Linux
RID:         ubuntu.16.04-x64
Base Path:   /usr/share/dotnet/sdk/1.0.4

1 个答案:

答案 0 :(得分:1)

很可能你错过了一个依赖

这是我的代码:

apt-get update \
&& apt-get install -y --no-install-recommends \
    libc6 \
    libcurl3 \
    libgcc1 \
    libgssapi-krb5-2 \
    libicu52 \
    liblttng-ust0 \
    libgdiplus \
    libssl1.0.0 \
    libstdc++6 \
    libunwind8 \
    libuuid1 \
    zlib1g \

如果没有参考this