Как я могу передать параметры на другую .Net-приложения
Я тестирую простой vb.net консольное приложение (назовем его "дочерним" ). Я хочу передать ему некоторые аргументы из другого приложения (например, "родительского") и заставить его вернуть код выхода.
Вот код для дочернего приложения:
Public Sub Main() Environment.ExitCode = 0 Dim tstr As String = "" For i As Short = 0 To My.Application.CommandLineArgs.Count - 1 Step 1 tstr &= My.Application.CommandLineArgs(i) & vbCrLf Next If My.Application.CommandLineArgs.Count > 0 Then MsgBox("Number of Arguments: " & My.Application.CommandLineArgs.Count & vbCrLf & "Arguments: " & tstr) Environment.ExitCode = 1 End If End End Sub
Вот код вызывающего метода в Родительском приложении:
Private Sub ChkDBUtility() Handles cmdChkDBUtility.Click Dim iProcess As Process = Nothing If IsProcessRunning(mDBUtilName) = False Then ' the process is not running ' determine if the application is installed If IsFile(mFullUtilPgmName) = True Then Dim startInfo As ProcessStartInfo = New ProcessStartInfo(mFullUtilPgmName) startInfo.WindowStyle = ProcessWindowStyle.Normal startInfo.Arguments = "Test123" iProcess = Process.Start(startInfo) iProcess.WaitForExit() If iProcess.HasExited Then Dim i As Integer = iProcess.ExitCode MsgBox("Return code = " & i) End If End If End If End Sub
Примечание: переменные "mDBUtilName" и "mFullUtilPgmName" назначаются в другом месте родительского приложения и являются правильными.
Дочернее приложение, похоже, не получает переданные параметры. То есть,
CommandLineArgs.Countникогда не бывает больше нуля.
Что я уже пробовал:
Я пробовал различные способы получения аргументов командной строки в дочернем приложении, включая:
Public Sub Main(ByVal args() As String)
И
Dim arguments As String() = Environment.GetCommandLineArgs()в главной субмарине.
Я также запустил дочернее приложение в режиме отладки в visual studio и установил аргументы командной строки на вкладке debug проекта. Это, кажется, работает нормально.
Я попытался обернуть переданный параметр в тройные кавычки.
Maciej Los
Почему? Process.Start(startInfo)
получает только один аргумент? Он должен получить как минимум два аргумента: один - приложение для запуска, второй - аргумент.
Kevin Brady
Имя приложения задается в операторе инициализации:
Дим информацию как изменение панели = новый изменение панели(mFullUtilPgmName)
Kevin Brady
Я получил это от: https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.arguments(v=vs. 110).aspx
Maciej Los
Какой фреймворк: WinForm, ConsoleApp, WPF, WebUI?
Kevin Brady
Это консольное приложение. Пусковой объект - это основная подлодка. Is IS net frame work 4.0 профиль клиента.