Bisakah Anda mencampur file vb dan c # dalam proyek yang sama untuk perpustakaan kelas? Apakah ada pengaturan yang memungkinkan?
Saya mencoba dan tidak ada intellisense yang berfungsi dengan baik, meskipun kompiler latar belakang tampaknya menanganinya dengan cukup baik (selain dari kenyataan bahwa saya, kemudian, memiliki 2 kelas di namespace yang sama dengan nama yang sama dan tidak mengeluh).
Kami mencoba mengonversi dari VB ke C # tetapi belum selesai mengonversi semua kode. Saya memiliki beberapa kode baru yang perlu saya tulis, tetapi tidak benar-benar ingin membuat proyek baru hanya untuk itu.
Jawaban:
Tidak bisa. Suatu perakitan / proyek (setiap proyek biasanya mengkompilasi ke 1 perakitan) harus satu bahasa. Namun, Anda dapat menggunakan banyak majelis, dan masing-masing dapat dikodekan dalam bahasa yang berbeda karena semuanya dikompilasi ke MSIL.
Ini dikompilasi dengan baik dan tidak mengeluh karena proyek VB.NET hanya akan benar-benar mengkompilasi file .vb dan proyek C # hanya akan benar-benar mengkompilasi file .cs. Itu mengabaikan yang lain, karena itu Anda tidak menerima kesalahan.
Sunting: Jika Anda menambahkan file .vb ke proyek C #, pilih file di panel Solution Explorer dan kemudian lihat panel Properties, Anda akan melihat bahwa Build Action adalah 'Konten', bukan 'Kompilasi'. Itu diperlakukan sebagai file teks sederhana dan bahkan tidak bisa tertanam dalam majelis yang dikompilasi sebagai sumber daya biner.
Sunting: Dengan situs web asp.net Anda dapat menambahkan kontrol pengguna web c # ke situs web vb.net
sumber
Sebenarnya, saya mewarisi sebuah proyek beberapa tahun yang lalu dari seorang kolega yang telah memutuskan untuk mencampur VB dan C # webforms dalam proyek yang sama. Itu berhasil tetapi jauh dari menyenangkan untuk dipertahankan.
Saya memutuskan bahwa kode baru harus kelas C # dan untuk membuatnya bekerja saya harus menambahkan subnode ke bagian kompilasi dari web.config
Semua kode VB masuk ke subfolder di App_Code yang disebut VB dan kode C # ke dalam subfolder CS. Ini akan menghasilkan dua file .dll. Ini berfungsi, tetapi kode dikompilasi dalam urutan yang sama seperti yang tercantum dalam "codeSubDirectories" dan karenanya Antarmuka harus berada di folder VB jika digunakan dalam C # dan VB.
Saya memiliki kedua referensi ke VB dan C # compiler di
Proyek ini saat ini diperbarui ke kerangka 3.5 dan masih berfungsi (tetapi masih tidak menyenangkan untuk dipelihara ..)
sumber
Anda tidak dapat mencampur vb dan c # dalam proyek yang sama - jika Anda perhatikan di studio visual file proyek adalah .vbproj atau .csproj. Anda dapat menggunakan solusi - miliki 1 proj dalam vb dan 1 dalam c #.
Sepertinya menurut ini, Anda berpotensi menggunakannya keduanya dalam proyek web di direktori App_Code:
http://pietschsoft.com/post/2006/03/30/ASPNET-20-Gunakan-VBNET-and-C-within-the-App_Code-folder.aspx
sumber
Mungkin dengan beberapa pengembangan MSBuild kustom. .Target yang disediakan memaksa proyek menjadi bahasa tunggal - tetapi tidak ada batasan runtime atau tooling yang mencegah hal ini.
Baik kompiler VB dan CS dapat menampilkan ke modul - versi CLR untuk file .obj. Dengan menggunakan tautan rakitan, Anda dapat mengambil modul dari kode VB dan CS dan menghasilkan satu rakitan.
Bukan berarti ini akan menjadi upaya sepele, tetapi mungkin akan berhasil.
sumber
Panduan: Menggunakan Beberapa Bahasa Pemrograman dalam Proyek Situs Web http://msdn.microsoft.com/en-us/library/ms366714.aspx
sumber
Meskipun Visual Studio tidak mendukung ini (Anda dapat melakukan beberapa trik dan membuat MSBuild mengkompilasi keduanya, tetapi tidak dari dalam Visual Studio), SharpDevelop melakukannya. Anda dapat memiliki keduanya dalam solusi yang sama (selama Anda menjalankan Visual Studio Professional ke atas), jadi solusi termudah jika Anda ingin tetap menggunakan Visual Studio adalah dengan memisahkan kode VB Anda ke dalam proyek yang berbeda dan mengaksesnya dengan cara itu.
sumber
Klik kanan Proyek. Pilih Tambahkan Folder Asp.Net. Di bawah Folder, buat dua folder, satu bernama VBCodeFiles dan CSCodeFiles lainnya di Web.Config menambahkan elemen baru di bawah kompilasi
Sekarang, Buat halaman cshtml. Tambahkan referensi ke VBCodeFiles.Namespace.MyClassName menggunakan
Di mana MyClassName adalah objek kelas yang ditemukan di namespace di atas. sekarang tulis objek dalam pisau cukur menggunakan file cshtml.
Harap dicatat, direktoriName = "CSCodeFiles" berlebihan jika ini adalah Proyek C # dan direktoriName = "VBCodeFiles" berlebihan jika ini adalah proyek VB.Net.
sumber
Ya itu mungkin. Menambahkan c # dan vb.net memproyeksikan menjadi solusi tunggal
langkah1: File-> Tambah-> Proyek Yang Ada
Langkah2: Proyek-> Tambahkan referensi-> dll atau exe proyek yang Anda tambahkan sebelumnya.
step3: Dalam formulir vb.net di mana Anda ingin menggunakan c # forms-> import namespace of project.
sumber
Saya tidak melihat bagaimana Anda dapat mengkompilasi proyek dengan kompiler C # (atau kompiler VB) dan tidak menolak di bahasa yang salah untuk kompiler.
Simpan kode C # Anda di proyek terpisah dari proyek VB Anda. Anda dapat memasukkan proyek-proyek ini ke dalam solusi yang sama.
sumber
Anda memerlukan satu proyek per bahasa. Saya cukup yakin saya melihat alat yang menggabungkan rakitan, jika Anda menemukan alat itu Anda harus baik untuk pergi. Jika Anda perlu menggunakan kedua bahasa di kelas yang sama, Anda harus dapat menulis setengahnya di katakanlah VB.net dan kemudian menulis sisanya dalam C # dengan mewarisi kelas VB.net.
sumber
Dengan risiko mengulangi setiap jawaban lain, tidak, Anda tidak dapat mencampurkannya dalam proyek yang sama.
Selain itu, jika Anda baru saja selesai mengonversi VB ke C #, mengapa Anda menulis kode baru di VB?
sumber
Untuk .net 2.0 ini berfungsi. Itu TIDAK mengkompilasi keduanya dalam proyek yang sama jika Anda membuat sub direktori dalam kode aplikasi dengan kode bahasa terkait. Sampai sekarang, saya mencari apakah ini harus bekerja dalam 3,5 atau tidak.
sumber
Mengapa Anda tidak mengkompilasi
VB
kode Anda ke perpustakaan (.dll
). Referensi nanti dari kode Anda dan hanya itu. Dikeloladlls
mengandungMSIL
yang keduanyac#
danvb
dikompilasi.sumber
Seperti yang orang lain katakan, Anda tidak dapat menempatkan keduanya dalam satu proyek. Namun, jika Anda hanya memiliki sepotong kecil kode C # atau VB yang ingin Anda sertakan dalam proyek dalam bahasa lain, ada alat konversi otomatis . Mereka tidak sempurna, tetapi mereka melakukan banyak hal dengan cukup baik. Selain itu, SharpDevelop memiliki utilitas konversi bawaan.
sumber
Tidak, tidak dalam proyek yang sama. Tetapi Anda dapat menggunakannya dalam solusi yang sama. meskipun Anda perlu berhati-hati bahwa kode Anda sesuai dengan CLS. Itu berarti Anda tidak boleh menggunakan fungsionalitas / fitur tersebut yang tidak dimengerti oleh bahasa lain. Misalnya VB tidak mengerti int unsigned.
sumber
Dalam skenario kami, ini adalah proyek VB.NET tunggal (aplikasi Windows Desktop) dalam satu solusi. Namun kami ingin memanfaatkan fitur C # seperti bilangan bulat yang ditandatangani / tidak ditandatangani dan fitur literal XML dan string di VB.NET. Jadi tergantung pada fitur, pada saat runtime kita membangun file kode, kompilasi menggunakan masing-masing Rosalyn compiler (VB / CS) ke dalam DLL dan secara dinamis memuat ke perakitan saat ini. Tentu saja kami harus mengerjakan delinking, unloading, reload, penamaan dll DLL dinamis dan manajemen memori yang kami gunakan GUID dinamis untuk penamaan untuk menghindari konflik. Ini berfungsi dengan baik di mana pengguna aplikasi dapat terhubung ke DB apa pun dari aplikasi desktop kami, menulis kueri SQL, mengonversi koneksi ke koneksi LINQ dan menulis kueri LINQ juga yang semuanya membutuhkan pembangunan dinamis kode sumber, mengkompilasi ke dalam DLL dan melampirkan ke perakitan saat ini.
sumber
Ya, Anda dapat menambahkan kedua file di situs web saja. Jika proyek ini adalah aplikasi web, itu tidak akan memungkinkan berbagai jenis file.
sumber