我有一个供多个应用程序使用的DLL(vb.net)。
我已经在多个.net应用程序中引用了DLL(使用Visual Studio 2015)。
我需要确定哪个应用程序正在调用功能。
例如:
Public Sub xpto ()
if (application A) then
end if
If (application B) then
end if
End Sub
如何在dll中执行此操作?
答案 0 :(得分:1)
您可以使用Assembly.GetCallingAssembly()
获取第一个调用您的函数的程序集。
答案 1 :(得分:0)
我会使用Assembly.GetEntryAssembly()而不是建议的GetCallingAssembly()
。
此调用将帮助您识别正在运行的实际过程,而不是立即调用程序集的库。
获取默认应用程序域中的进程可执行文件。在 其他应用程序域,这是第一个可执行文件 由ExecuteAssembly(String)执行。
适用于您的方案,您将具有以下内容:
Public Sub xpto ()
' Grabs the entry assembly.
Dim entryAssembly as Assembly = Assembly.GetEntryAssembly()
' Grabs its name
Dim entryAssemblyName as AssemblyName = entryAssembly.GetName()
If (entryAssemblyName.Name == ApplicationA) Then
End If
If (entryAssemblyName.Name == ApplicationB) Then
End If
End Sub