Çözüldü C# Kodundaki hatanın çözümü ne olabilir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

özkan533

Centipat
Katılım
21 Temmuz 2024
Mesajlar
285
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Selamünaleyküm C# da Minecraft Launcher yapmak istedim ama error veriyor konuya cevap yazan herkese teşekkür ederim, bu arada nugetden cmllib'i yükledim hata yaptıysam çok özür dilerim.
Error bu.



Kod:
C#:
Using System;
Using System. Collections. Generic;
Using System.componentmodel;
Using System. Data;
Using System. Drawing;
Using System. Linq;
Using System. Text;
Using System. Threading. Tasks;
Using System. Windows. Forms;
Using cmllib. Core;
Using cmllib. Core. Auth;
Using System. Threading;
Using static System. Windows. Forms. Visualstyles. Visualstyleelement;

Namespace bonzi_launcher.
{
 Public partial class form1: Form.
 {
 Public Form1()
 {
 InitializeComponent();
 Control. Checkforıllegalcrossthreadcalls = false;
 }

 Public static string versiyon;
 Private Void path()
 {
 Var path = New MinecraftPath();
 Var Launcher = New cmlauncher(path);

 Foreach (var item in launcher.GetAllVersions())
 {
 Combobox1.ıtems. Add(item. Name);
 }
 }

 Private Void Launch()
 {
 Var path = New MinecraftPath();
 Var Launcher = New cmlauncher(path);
 #Pragma warning disable CS0618 // tür veya üye artık kullanılmıyor.
 Var launchoption = New mlaunchoption.
 {
 Maximumrammb = 3044,
 Session = msession. Getofflinesession(textbox1.text),
 Serverıp = "",
 };
 #Pragma warning restore CS0618 // tür veya üye artık kullanılmıyor.
 Versiyon = comboBox1.SelectedItem.ToString();
 Var process = Launcher. Createprocess(versiyon, launchoption);
 process.Start();
 Hide();
 }

 Private Void form1_load(object sender, eventargs e)
 {
 path();
 }

 Private Void button1_click(object sender, eventargs e)
 {
 Button1.enabled = false;
 Thread thread = New thread(() => Launch());
 thread.Start();
 }

 Private class cmlauncher.
 {
 Private minecraftpath path;

 Public cmlauncher(minecraftpath path)
 {
 This. Path = path;
 }
 }
 }
}
 
Çözüm
Merhaba, sizle paylaşılan çözümlerin mevzuyla alakası yoktur.

Sorun büyük ihtimalle kodları aldıgınız kaynağın eskimiş olması. Çünkü kütüphane değişmiş ve bazı sınıflar ve metodlar değişmiş.

Mesela sürümleri aldığınız metodun artık sync sürümü yok, async sürümü var. Yani kodunuzda şöyle uygulanmalı:
C#:
var launcher = new MinecraftLauncher();

var versions = await launcher.GetAllVersionsAsync();

Aynı şekilde oyunu "Launch" eden metod da değişmiş durumda. Örnek kullanım şöyle olmalı:
C#:
var launcher = new MinecraftLauncher();
var process = await launcher.InstallAndBuildProcessAsync("1.21", new MLaunchOption());
process.Start();
ChatGPT'ye sormayı denediniz mi? Buradan paylaşmak yasak olduğu için çıktıyı gönderemiyorum ancak konunuza yazdığınız şeyi yapay zekaya bir danışmanızı öneririm.
ChatGPT halleder.

Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CmlLib.Core;
using CmlLib.Core.Auth;
using System.Threading;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;

namespace Bonzi_Launcher
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        public static string versiyon;

        private void LoadVersions()
        {
            var path = new MinecraftPath();
            var launcher = new CMLauncher(path);

            foreach (var item in launcher.GetAllVersions())
            {
                comboBox1.Items.Add(item.Name);
            }
        }

        private void Launch()
        {
            var path = new MinecraftPath();
            var launcher = new CMLauncher(path);

#pragma warning disable CS0618 // 'MSession.GetOfflineSession(string)' is obsolete
            var launchOption = new MLaunchOption
            {
                MaximumRamMb = 3044,
                Session = MSession.GetOfflineSession(textBox1.Text),
                ServerIp = ""
            };
#pragma warning restore CS0618

            versiyon = comboBox1.SelectedItem.ToString();
            var process = launcher.CreateProcess(versiyon, launchOption);
            process.Start();
            Hide();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            LoadVersions();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            Thread thread = new Thread(() => Launch());
            thread.Start();
        }
    }
}
 
Kod:
Using System; // ❌
using System; // ✅


Namespace bonzi_launcher. // ❌
namespace bonzi_launcher // ✅

Public yerine public, Private yerine private kullanılmalı
Yanlış sınıf tanımlamaları (form1, Form1 tutarsız, class ismi küçük harfle yazılmış)
Bazı var tanımlamaları eksik ya da yanlış (örneğin: Combobox1.ıtems)
Tür isimleri büyük harfle başlamalı (Void, Var gibi kelimeler küçük harfle olmalı)
ComboBox1'de Türkçe "ı" harfi var (ıtems) — derleyici hata verir
cmlauncher sınıfı içi eksik/uyumsuz tanımlanmış
Kod biçimi bozuk ve C# sözdizimine uygun değil

bunlar gördüklerim tüm kod :
iyi forumlar.

C#:
using System;
using System.Threading;
using System.Windows.Forms;
using CmlLib.Core;
using CmlLib.Core.Auth;
using CmlLib.Core.Launcher;


namespace bonzi_launcher
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;
        }


        public static string versiyon;


        private void LoadVersions()
        {
            var path = new MinecraftPath();
            var launcher = new CMLauncher(path);


            foreach (var item in launcher.GetAllVersions())
            {
                comboBox1.Items.Add(item.Name);
            }
        }


        private void Launch()
        {
            var path = new MinecraftPath();
            var launcher = new CMLauncher(path);


            var launchOption = new MLaunchOption
            {
                MaximumRamMb = 3044,
                Session = MSession.GetOfflineSession(textBox1.Text),
                ServerIp = ""
            };


            versiyon = comboBox1.SelectedItem.ToString();
            var process = launcher.CreateProcess(versiyon, launchOption);
            process.Start();
            Hide();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            LoadVersions();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            Thread thread = new Thread(() => Launch());
            thread.Start();
        }
    }
}
 

Yazdım ama benim kod da 3 hata vardı bu kodu yazdım 27 hata ya çıktı.
 
Merhaba, sizle paylaşılan çözümlerin mevzuyla alakası yoktur.

Sorun büyük ihtimalle kodları aldıgınız kaynağın eskimiş olması. Çünkü kütüphane değişmiş ve bazı sınıflar ve metodlar değişmiş.

Mesela sürümleri aldığınız metodun artık sync sürümü yok, async sürümü var. Yani kodunuzda şöyle uygulanmalı:
C#:
var launcher = new MinecraftLauncher();

var versions = await launcher.GetAllVersionsAsync();

Aynı şekilde oyunu "Launch" eden metod da değişmiş durumda. Örnek kullanım şöyle olmalı:
C#:
var launcher = new MinecraftLauncher();
var process = await launcher.InstallAndBuildProcessAsync("1.21", new MLaunchOption());
process.Start();
 
Çözüm

Teşekkür ederim Allah razı olsun.
 

Bu konuyu görüntüleyen kullanıcılar

Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…