7

我有一个MyProgram.EXE引用实用程序程序集的控制台应用程序 ()。

在我的实用程序程序集中,我有代码:

Dim asm As Assembly = Assembly.GetExecutingAssembly()
Dim location As String = asm.Location
Dim appName As String = System.IO.Path.GetDirectoryName(location)
Conole.WriteLine("AppName is: {0}", appName)

当我调用它时MyProgram.EXE,我收到“ AppName is: Utilities.dll

我要的是“ AppName is: MyProgram.EXE

我究竟做错了什么?

4

4 回答 4

14

改为使用GetEntryAssembly()来获取包含入口点的程序集。

更好的方法是使用System.Environment.CommandLine属性。

具体来说:

Dim location As String = System.Environment.GetCommandLineArgs()(0)
Dim appName As String = System.IO.Path.GetFileName(location)
Conole.WriteLine("AppName is: {0}", appName)

顺便说一句,你想使用GetFileName而不是GetDirectoryName

于 2009-01-22T17:19:28.567 回答
11

由于您询问的是 VB.NET,因此您可以轻松地从“我的”命名空间中提取此信息,如下所示:

My.Application.Info.AssemblyName
于 2011-07-19T14:47:10.797 回答
3

我用:

CallingAppName = System.Reflection.Assembly.GetEntryAssembly.GetName().Name
于 2020-02-28T09:57:43.863 回答
0

就我而言,我无法访问 My.Application,可能是因为我在一个全局类中,所以我使用了:

AppName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
于 2018-12-03T21:26:32.697 回答