将两个参数从一个WPF应用程序传递到另一个WPF应用程序时出现问题。 我将第二个WPF应用程序发布到我的桌面,我想用我的第一个WPF应用程序启动它。
第一 - 程序:
public MainWindow()
{
InitializeComponent();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\Users\User\Desktop\Work.application";
startInfo.Arguments = "test 1234";
Process.Start(startInfo);
}
为了在第二个程序中获取参数,我尝试了以下代码
1.使用Environment.GetCommandLineArgs()=>获取Mainwindow中的参数不起作用
public MainWindowSecondProgram()
{
InitializeComponent();
string[] args = Environment.GetCommandLineArgs();
foreach (String element in args)
{
MessageBox.Show(element);
}
}
2.使用startup function =>获取应用程序中的参数不起作用
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
foreach (string element in e.Args)
{
MessageBox.Show(element);
}
}
}
现在,如果我将Work.exe(而不是Work.application)从我的Visual Studio Project文件夹复制到我的桌面并更改路径
@"C:\Users\User\Desktop\Work.application" to
@"C:\Users\User\Desktop\Work.exe"
再次运行我的第一个程序,它完美搭配 第一个功能和第二个功能。
那么为什么它与EXE一起使用而不是与已发布的应用程序一起使用?
编辑: 我通过传递两个抛出调试器的参数来测试这两个函数并且它可以工作,但不是通过将它传递给已发布的应用程序,只有EXE才能工作。
答案 0 :(得分:0)
要在ClickOnce应用程序中读取参数,请使用:
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
你可以read more here。
另外,不确定,但您可能需要通过.appref-ms快捷方式运行ClickOnce应用程序而不是.application文件本身。