Bu bir ClickOnce uygulamasıdır. documentation'a göre, "Uygulamanız ilk olarak çalıştırıldığında başlangıçta komut satırı seçenekleri sağlanmışsa, Yeniden Başlat, uygulamayı yine aynı seçeneklerle başlatır.". Ama bunun ClickOnce uygulamalarıyla çalışıp çalışmadığını bilmiyorum. Eğer öyleyse, ne yapıyorum yanlış?Application.Restart bağımsız değişkenleri geri alamıyor geri
public Form1()
{
InitializeComponent();
textBox1.Text = string.Join(Environment.NewLine, GetCommandLineFile());
}
private static string[] GetCommandLineFile()
{
if (AppDomain.CurrentDomain != null &&
AppDomain.CurrentDomain.SetupInformation != null &&
AppDomain.CurrentDomain.SetupInformation.ActivationArguments != null &&
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null &&
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Any())
{
return AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
}
else return new string[] { };
}
private void button1_Click(object sender, EventArgs e)
{
Application.Restart();
}
Ben
.abc
uzantılı başvurumu ilişkili
ve benim .abc
dosyayı çift tıklayın, uygulama yalnızca argüman olarak dosya adıyla başlatacak, ama sonra ne zaman: Burada
button1
'a basarak),
GetCommandLineFile()
boş bir dizi döndürecektir.
Aynı sorunu yaşıyorum. Aynı argümanları kullanarak yeniden başlatmak için başvuruma ihtiyacım var. Sadece Application.Restart() yöntemini çağırmak kesinlikle aynı argümanları (* en azından ClickOnce kullanırken değil) iletir. Bunu yapmak için başka bir yol bulamıyorum. Restart() yöntemi, yeni argümanları iletmenize ve Process.Start çağrısı yapmanıza izin vermez çünkü bir güncelleme nedeniyle yeniden başlatılmışsanız, yürütülebilir yol değişecektir ve yolun yolunu bulmak için bulamıyorum. appref-ms – Nick
Benim geçici çözüm, komut dizini argümanlarını bir dosyaya veri güncelleme dizinini güncellemeden/yeniden başlatmadan önce yazmaktır ve yeniden başlatma işleminden sonra hiçbir komut satırı argümanı geçmezse, argüman dosyasının mevcut olup olmadığını kontrol eder. eğer yaparsa, argümanları dosyadan yükler ve dosyayı siler. – Nick
Evet, böyle bir şey yaptım. – Juan