VB6 Ke C#
Konverter VB6 -> C# 2017 berbasis VB6.
Penggunaan
Gratis untuk digunakan. Bebas untuk bercabang. Bebas untuk berkontribusi. Bebas untuk bertanya tentang. Bebas untuk dijual. Bebas menjual atas nama Anda sendiri... Bebas melakukan apa saja kecuali mengatakan saya tidak bisa (Lihat LISENSI).
Lihat di bawah untuk informasi dasar. Lihat Wiki untuk informasi lebih rinci. Jangan ragu untuk menghubungi untuk mendapatkan dukungan.
Mulai Cepat
- Buka file
prj.vbp
, mulai program (Membutuhkan IDE VB6). - Masukkan beberapa nilai konfigurasi ke dalam formulir
Config
melalui tombol. - Sekarang Anda telah memilih proyek Anda, klik tombol
SCAN
. Ini membantu konverter mengetahui perbedaan antara Metode tanpa tanda kurung dan variabel/konstanta. Itu juga membuat daftar lengkap impor (yang dapat dibersihkan di IDE VS 2019 melalui ^K^E). - Jika Anda mau, klik
SUPPORT
untuk menghasilkan struktur dukungan proyek dasar.- Alternatifnya, file
VBExtension.cs
dan VBConstants.cs
dapat disalin langsung dari root proyek dan disertakan di tempat lain.
- Lalu, masukkan nama file dan klik
Single File
untuk mencoba mengonversi file yang Anda masukkan di sampingnya.
Jika Anda ingin mengonversi seluruh proyek, cukup klik ALL
, dan itu akan melakukan pemindaian, pembuatan dukungan, dan konversi keseluruhan proyek secara langsung.
CATATAN: Ini mungkin bukan yang tercepat, masih memerlukan upaya manual, tetapi lebih cepat daripada melakukan SEMUA secara manual!
Pembaruan 2021-12-01
Versi asli konverter mengatasi masalah ini dengan pendekatan blok demi blok, memisahkan setiap unit program logis ke dalam stringnya sendiri dan mengonversinya sendiri. Akibatnya, konverter melakukan banyak lintasan dan pada dasarnya berjalan sangat lambat. Setelah memperbarui linter agar tidak menggunakan pendekatan ini, namun hanya menjalankan kode dari atas ke bawah, tampak jelas bahwa konverter dapat melakukan hal yang sama dengan akurasi yang sama.
Jadi, yang dirilis hari ini adalah konverter v2, bersama dengan v1, melalui tombol radio di formulir utama. Jangan ragu untuk memadupadankan, mengonversi keseluruhan proyek dengan satu proyek, dan kemudian file individual dengan file lainnya. Mudah-mudahan, dengan dua pendekatan yang sangat berbeda, salah satu dari keduanya akan bekerja lebih baik daripada yang lain dan akan menghasilkan lebih sedikit pekerjaan. Sekali lagi, keduanya masih hanya konversi 80-90%. Ada banyak hal yang harus Anda lakukan secara manual dan memeriksa ulang (seperti batas loop), tetapi sekali lagi, ini pasti lebih baik daripada mengubah semua &
dalam kode VB6 Anda menjadi +
s untuk C#.
Bagaimana saya ...?
Ada banyak pertanyaan terkait konversi. Jika Anda hanya ingin mengetahui cara konverter ini menangani pola tertentu, silakan lihat Bagaimana Caranya...? halaman di wiki kami.
Apakah Anda menggunakan konverter ini atau tidak, kami memberikan solusi kami untuk teka-teki konversi yang umum ditemui. Solusi kami cepat, langsung pada sasaran, dan umumnya tidak menggunakan banyak pemrograman atau overhead konteks. Meskipun mereka mungkin mengandalkan modul ekstensi kami, semuanya adalah kode C# asli, dan, secara umum, cukup mirip dengan apa yang Anda lakukan di VB6.
Persyaratan
Persyaratan konverter
- Konverter berjalan di IDE VB6. Anda tahu, IDE dari program yang Anda coba konversi.
Persyaratan program yang dikonversi
- Visual Studio mendukung beberapa versi C# yang relatif modern. Atau bergantian.
- Paket Daya Visual Basic / Tautan lain / Disediakan dalam Repo karena beberapa hari mungkin sulit ditemukan
- Mengizinkan penggunaan fungsi VB Standar seperti
Mid
, Trim
, Abs
, DateDiff
, dll, langsung dalam kode C#. - Memastikan kompatibilitas 99,9% dengan fungsionalitas VB6 (kecuali untuk
Format
...), tanpa memerlukan perpustakaan kotak hitam pihak ketiga (ini dari MS, jadi ini adalah kotak hitam pihak pertama). - Mudah untuk diulang setelah dikonversi dan dijalankan.
instruksi
Silakan lihat wiki untuk informasi lebih lanjut tentang penggunaan.
Pertimbangan Desain
- Sederhana - Tidak dirancang untuk melakukan konversi 100%. Mungkin saja 80% - 90% pekerjaan kasarnya.
- Berbasis VB6 - Mengapa tidak? Anda harus memiliki kompiler VB6 yang berfungsi jika Anda tetap mengonversi DARI VB6.
- Kustom - Ini dibuat untuk proyek pribadi, dan karenanya, dirancang khusus untuk kasus penggunaan kami. Namun, tidak ada alasan mengapa seseorang tidak dapat menyelidiki logika dan mengubahnya untuk masalah mereka sendiri.
- Oportunistik - Kode ini sangat bergantung pada keseragaman relatif dari IDE VB6:
- Spasi relatif konsisten karena IDE menerapkannya.
- Kapitalisasi kata kunci dapat dijamin.
- Kami memanfaatkan Microsoft Power Packs, dan TIDAK perlu mengonversi sebagian besar pernyataan inti VB6. Selanjutnya, Anda dapat terus menggunakan pernyataan seperti
DateDiff
, Left
, Trim
seperti yang Anda lakukan di VB. Atau, jika Anda mau, mulailah bermigrasi dari mereka SETELAH konversi. Kami hanya menggunakan perpustakaan Microsoft untuk kompatibilitas maksimum, dan oleh karena itu, kami tidak memiliki perpustakaan pengganti string yang besar, dan kami juga tidak terlalu bergantung pada DLL atau perpustakaan kami sendiri seperti yang dilakukan beberapa konverter (kami membuat beberapa untuk kemudahan sintaksis, tetapi hasil akhirnya adalah kode C# murni).
- Non-asumsi - Ini membuat asumsi bahwa kode dikompilasi saat berada di VB, sehingga tidak berasumsi bahwa referensi yang tidak dapat diselesaikan tidak akan ditemukan.
- Impor universal - Mengimpor SETIAP modul kode, seperti yang dilakukan VB6 secara otomatis. Jadikan Visual Studio melakukan pekerjaan memutuskan mana yang akan digunakan hanya dengan mengoptimalkan impor setelah konversi.
- C# 2017 - Ini adalah pendatang baru. Belum pernah ada solusi freeware untuk VB6 -> C#, dan sekarang VB.NET kurang lebih dihentikan, mengapa tidak?
Masalah Umum (khusus v1)
- Saat ini, konverter akan sering menolak keras file yang berisi kata 'Properti' di mana pun di dalamnya (selain deklarasi properti). Meskipun hal ini menyusahkan dan kemungkinan besar akan diperbaiki, hal ini terjadi menjelang akhir kegunaan proyek (dan karenanya tidak mendesak dalam daftar perbaikan), dan jika hal ini menghambat kemajuan, variabel yang memuat kata '...Properti' hanya diganti namanya sementara menjadi sesuatu seperti '...Prppty', dan kemudian diubah kembali dalam file yang dikonversi.
- Masalah ini telah diatasi di Versi 2, namun dalam beberapa kasus mungkin masih muncul di v1.
Sisi buruknya
- Ini tidak akan menghasilkan kode yang akan dikompilasi dalam bentuk yang dihasilkannya. Jarak tempuh terakhir adalah yang paling mahal untuk diotomatisasi, dan sering kali paling baik dilakukan secara manual. Tampaknya lebih bijaksana untuk membuat sesuatu berjalan maksimal, dan menyelesaikan setiap kasus tepi atau konversi akhir dengan tangan.
- Kustomisasi UI terbatas (tetapi kustomisasi berbasis kode tanpa batas). Ini bukanlah solusi yang paling dapat disesuaikan. Kecuali, tentu saja, Anda ingin mempelajari sedikit kode sumber tentang konverter. Tapi, itu sebabnya tersedia.
- Keluaran tidak berlintas. Kode yang dihasilkan berantakan, secara gaya. Itulah gunanya IDE modern. Semua format buruk dapat dibersihkan dengan ^K^D. Impor yang tidak digunakan dengan ^K^E. Dan, ada banyak tanda { dan } tambahan yang mungkin ingin Anda hapus.
- Konverter saat ini SANGAT buruk pada batas loop. Maaf, ini adalah salah satu kendala konversi VB6->C#, dan tidak banyak logika dalam cara konversinya. Ini membosankan, tetapi lakukan pencarian di seluruh proyek untuk semua loop dan periksa batasnya secara manual.
- Ada metode tambahan untuk setiap acara. Satu untuk tanda tangan yang benar, satu lagi untuk tanda tangan asli. Dalam kebanyakan kasus, redundansi tidak diperlukan, tetapi ini memberikan konversi yang paling mudah. Ini dapat direduksi menjadi satu metode dalam banyak kasus (tetapi tidak semua, itulah sebabnya saya tidak melakukannya).
CATATAN: Di sebagian besar tempat yang diketahui konverter, akan ada masalah, ia akan membubuhi keterangan kode dengan komentar // TODO:
:. Pastikan untuk mengatasi masing-masing hal ini secara menyeluruh.
Kelebihan
- Ini gratis.
- Anda memiliki sumbernya (sesuaikan, apa pun).
- Lakukan semuanya atau hanya satu file dalam satu waktu.
- Ini jauh lebih baik daripada melakukan semuanya dengan tangan.
- Ini akan memberi Anda wawasan yang baik tentang apa yang terjadi, tanpa harus melakukan SEMUA upaya manual untuk melakukan konversi sederhana.
- Bukan konversi tercepat, tapi konversi yang mudah (tetapi v2 menjadi jauh lebih baik). Periksa fungsi seperti
ConvertSub
atau ConvertPrototype
.- Namun pikirkanlah... Anda ingin melakukan konversi dalam satu kali saja, bukan dijalankan berulang-ulang selama eksekusi yang dikonversi.
- Memungkinkan pemeriksaan tentang bagaimana sesuatu diubah. Tidak suka hasilnya? Ubah itu.
- Anda dapat menempatkan breakpoint VB6 di mana pun Anda suka dan berhenti. Selain itu, cukup tambahkan baris seperti
If LineN = 387 Then Stop
, dan konverter akan berhenti di situ.
Ekstra
- Linter kode VB6.
?Lint
. Hilangkan sebanyak mungkin utang teknologi bahkan sebelum memulai prosesnya. - Formulir VB6 ke XAML
Kemungkinan Masa Depan
Proyek ini sebagian besar berjalan apa adanya. Ia bekerja pada apa yang dilakukannya. Namun, beberapa hal yang perlu diperhatikan adalah hal-hal seperti "Properti Ekstensi". Jika C# pernah mengimplementasikan ini atau sesuatu seperti itu, mengonversi .Visible = True
menjadi lebih mudah. Karena C# sekarang menggunakan enum dan bukan boolean, hal ini tidak mungkin dilakukan, tetapi akan terjadi dengan fitur ini.
Kontak
- Jika Anda memiliki pertanyaan, kekhawatiran, atau sekadar ingin petunjuk singkat, jangan ragu untuk membuka Masalah. Saya tidak bisa menjamin banyak hal, tapi saya akan mencobanya!