Вызов сборки для получения имени приложения VB.NET - PullRequest
6 голосов
/ 22 января 2009

У меня есть консольное приложение (MyProgram.EXE), которое ссылается на сборку Utilities.

В моей сборке утилит у меня есть код, который делает:

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"

Что я делаю не так?

Ответы [ 3 ]

11 голосов
/ 22 января 2009

Вместо этого используйте 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

10 голосов
/ 19 июля 2011

Поскольку вы спрашивали о VB.NET, вы можете легко извлечь эту информацию из пространства имен "Мой", как показано ниже:

My.Application.Info.AssemblyName
0 голосов
/ 04 декабря 2018

В моем случае у меня не было доступа к My.Application, возможно, потому что я был в глобальном классе, поэтому я использовал:

AppName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...