我确实想将本机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()"
答案 0 :(得分:1)
点击此处查看我的回复:Service Fabric include additional files。您可以通过以下两种方法之一完成此操作:将本机DLL文件指定为服务项目的内容文件,或者在应用程序项目的后包MSBuild步骤中手动将文件复制到服务包。