【问题标题】:How to import native DLL on Service Fabric?如何在 Service Fabric 上导入本机 DLL?
【发布时间】:2016-05-24 21:31:29
【问题描述】:

我确实想将本机 DLL 导入 Microsoft 服务结构服务。这可能吗?如果是这样,我该如何实现?我想我被困在如何告诉部署也部署本机 DLL 以便稍后在运行时导入它。目前我收到一个运行时错误,即找不到 dll。由于整个应用程序都部署到了服务结构集群,我想我还需要以某种方式在那里获取所需的本机 DLL。

非常感谢任何帮助!提前谢谢!

最好的问候

马里奥

编辑: 抱歉,关于我的方法和错误,我可能需要的信息很少。我尝试像这样在我的 C# 服务中导入本机 DLL:

[DllImport("Plugin.dll", 
    EntryPoint = "DoSomeStuff",
    CallingConvention = CallingConvention.Cdecl)]
public static extern int DoSomeStuff();

然后在StatelessService的继承函数RunAsync中调用导入的函数:

protected override async Task RunAsync(CancellationToken cancellationToken)
{
    DoSomeStuff();
}

我的第一个方法是简单地将所需的 Plugin.dll 文件放入其他可执行文件所在的 bin 文件夹中。但是它们要么没有被移动到集群中,要么运行时找不到。

在运行时我确实得到了以下异常:

System.DllNotFoundException: Die DLL \"Plugin.dll\": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.
bei DoSomeStuff()
bei Application.<RunAsync>d__2.MoveNext() in C:\\SolutionPath\\ProjectPath\\Application.cs:Zeile 45.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei Microsoft.ServiceFabric.Services.Runtime.StatefulServiceReplicaAdapter.<ExecuteRunAsync>d__e.MoveNext()"

很抱歉出现德语错误信息(原文),我试着翻译一下:

System.DllNotFoundException: The DLL \"Plugin.dll\": The specified Module was not found. (Exception of HRESULT: 0x8007007E) cannot be loaded.
at DoSomeStuff()
at Application.<RunAsync>d__2.MoveNext() in C:\\SolutionPath\\ProjectPath\\Application.cs:Zeile 45.
--- End of stack trace of the exception origin, where the exception was raised ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.ServiceFabric.Services.Runtime.StatefulServiceReplicaAdapter.<ExecuteRunAsync>d__e.MoveNext()"

【问题讨论】:

  • 考虑尝试包含有关错误的一些信息以及任何可能使人们更容易提供帮助的代码 sn-ps

标签: c# dll azure-service-fabric


【解决方案1】:

在此处查看我的回复:Service Fabric include additional files。您可以通过以下两种方式之一完成此操作:将本机 DLL 文件指定为服务项目的内容文件,或在应用程序项目的打包后 MSBuild 步骤中手动将文件复制到服务包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2018-11-23
    • 2018-08-30
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多