Saya punya dua solusi yang memiliki beberapa kode umum, jadi saya ingin mengekstraknya dan membaginya di antara mereka. Selain itu, saya ingin dapat melepaskan perpustakaan itu secara mandiri karena mungkin bermanfaat bagi orang lain.
- Apa cara terbaik untuk melakukannya dengan Visual Studio 2008?
- Apakah proyek hadir dalam lebih dari satu solusi?
- Apakah saya memiliki solusi terpisah untuk bagian kode yang terpisah?
- Bisakah solusi bergantung pada yang lain?
.net
visual-studio
code-sharing
pupeno
sumber
sumber
Jawaban:
Sebuah proyek dapat dirujuk oleh beberapa solusi.
Masukkan pustaka atau kode inti Anda ke dalam satu proyek, kemudian rujuk proyek itu di kedua solusi.
sumber
Anda dapat "menautkan" file kode antara dua proyek. Klik kanan proyek Anda, pilih
Add
->Existing item
, lalu klik panah bawah di sebelahAdd
tombol:Dalam pengalaman saya, menautkan lebih mudah daripada membuat perpustakaan. Kode tertaut menghasilkan satu executable tunggal dengan versi tunggal.
sumber
File > Add > Existing Project...
akan memungkinkan Anda menambahkan proyek ke solusi Anda saat ini. Hanya menambahkan ini karena tidak ada tulisan di atas yang menunjukkan hal itu. Ini memungkinkan Anda memasukkan proyek yang sama dalam beberapa solusi.sumber
Anda dapat memasukkan proyek dalam lebih dari satu solusi. Saya tidak berpikir proyek memiliki konsep solusi yang menjadi bagiannya. Namun, alternatif lain adalah membuat solusi pertama dibangun ke beberapa tempat terkenal, dan referensi biner yang dikompilasi. Ini memiliki kelemahan yaitu Anda harus melakukan sedikit pekerjaan jika Anda ingin mereferensikan versi yang berbeda berdasarkan apakah Anda sedang membangun konfigurasi rilis atau debug.
Saya tidak percaya Anda dapat membuat satu solusi yang benar-benar bergantung pada yang lain, tetapi Anda dapat melakukan pembuatan otomatis Anda dalam urutan yang sesuai melalui skrip khusus. Pada dasarnya memperlakukan perpustakaan umum Anda seolah-olah itu ketergantungan pihak ketiga lain seperti NUnit dll.
sumber
Anda bisa wild-card inline menggunakan teknik berikut (yang merupakan cara di mana solusi @ Andomar disimpan dalam .csproj)
Masukkan:
Jika Anda ingin menyembunyikan file dan / atau mencegah wild-card termasuk diperluas jika Anda menambah atau menghapus item dari folder 'item virtual yang ada' seperti di
MySisterProject
atas.sumber
<Import
cache sampai Anda memuat ulang solusi seperti yang Anda katakan.Anda cukup membuat proyek Perpustakaan Kelas terpisah untuk berisi kode umum. Itu tidak perlu menjadi bagian dari solusi apa pun yang menggunakannya. Referensi perpustakaan kelas dari proyek apa pun yang membutuhkannya.
Satu-satunya trik sama sekali adalah bahwa Anda harus menggunakan referensi file untuk referensi proyek, karena itu tidak akan menjadi bagian dari solusi yang merujuknya. Ini berarti bahwa rakitan keluaran aktual harus ditempatkan di lokasi yang dapat diakses oleh siapa pun yang membangun proyek yang merujuknya. Ini bisa dilakukan dengan menempatkan majelis pada share, misalnya.
sumber
Anda dapat memasukkan proyek yang sama dalam lebih dari satu solusi, tetapi Anda dijamin akan mengalami masalah di masa mendatang (jalur relatif dapat menjadi tidak valid saat Anda memindahkan direktori misalnya)
Setelah bertahun-tahun berjuang dengan ini, saya akhirnya datang dengan solusi yang bisa diterapkan, tetapi mengharuskan Anda untuk menggunakan Subversion untuk kontrol sumber (yang bukan hal yang buruk)
Pada tingkat direktori solusi Anda, tambahkan svn: eksternal menunjuk ke proyek yang ingin Anda sertakan dalam solusi Anda. Subversion akan menarik proyek dari repositori dan menyimpannya dalam subfolder dari file solusi Anda. File solusi Anda cukup menggunakan jalur relatif untuk merujuk ke proyek Anda.
Jika saya menemukan lebih banyak waktu, saya akan menjelaskan ini secara rinci.
sumber
svn:externals
tautan keras ke repositori. Saat Anda memindahkan repositori, tautan eksternal masih menunjuk ke repositori lama.Ekstrak kode umum ke proyek perpustakaan kelas dan tambahkan proyek perpustakaan kelas itu ke solusi Anda. Kemudian Anda bisa menambahkan referensi ke kode umum dari proyek lain dengan menambahkan referensi proyek ke perpustakaan kelas itu. Keuntungan memiliki referensi proyek sebagai lawan dari referensi biner / rakitan adalah bahwa jika Anda mengubah konfigurasi bangunan Anda menjadi debug, rilis, custom, dll, proyek perpustakaan kelas umum akan dibangun berdasarkan konfigurasi itu juga.
sumber
Merupakan ide bagus untuk membuat perpustakaan kelas dll yang berisi semua fungsi umum. Setiap solusi dapat mereferensikan dll ini secara mandiri terlepas dari solusi lain.
Infact, ini adalah bagaimana sumber kami diatur dalam pekerjaan saya (dan saya percaya di banyak tempat lain).
Omong-omong, Solution tidak dapat secara eksplisit bergantung pada solusi lain.
sumber
Dua langkah utama yang terlibat adalah
1- Membuat C ++ dll
Di studio visual
Kode File Header
File Cpp
Periksa ini
opsi ini harus menjadi Dynamic Library (.dll) dan membangun solusi / proyek sekarang.
File first_dll.dll dibuat di folder Debug
2- Menghubungkannya dalam proyek C #
Buka proyek C #
Tambahkan baris ini di atas dalam proyek C #
Sekarang fungsi dari dll dapat diakses menggunakan pernyataan di bawah ini di beberapa fungsi
Saya membuat dll dalam proyek c ++ di VS2010 dan menggunakannya dalam VS2013 C # project.It bekerja dengan baik.
sumber
Anda dapat meng-host Server NuGet internal dan berbagi perpustakaan umum yang akan dibagikan dalam proyek lain secara internal dan eksternal.
Selanjutnya baca ini
sumber
Jika Anda mencoba untuk membagikan kode antara dua jenis proyek yang berbeda (Yaitu: proyek desktop dan proyek seluler), Anda dapat melihat ke folder solusi bersama . Saya harus melakukan itu untuk proyek saya saat ini karena proyek seluler dan desktop keduanya memerlukan kelas yang identik yang hanya dalam 1 file. Jika Anda memilih rute ini, salah satu proyek yang memiliki file yang ditautkan dapat membuat perubahan padanya dan semua proyek akan dibangun kembali terhadap perubahan itu.
sumber
Ada kasus yang sangat baik untuk menggunakan "menambahkan tautan file yang ada" ketika menggunakan kembali kode di seluruh proyek, dan saat itulah Anda perlu referensi dan mendukung versi berbeda dari pustaka dependen.
Membuat banyak majelis dengan referensi ke majelis eksternal yang berbeda tidak mudah dilakukan tanpa menduplikasi kode Anda, atau menggunakan trik dengan kontrol kode sumber.
Saya percaya bahwa paling mudah untuk mempertahankan satu proyek untuk pengembangan dan pengujian unit, kemudian untuk membuat proyek 'membangun' menggunakan tautan file yang ada ketika Anda perlu membuat rakitan yang merujuk versi berbeda dari rakitan eksternal tersebut.
sumber
Salah satu cara sederhana untuk memasukkan file kelas dari satu proyek dalam proyek lain adalah dengan Menambahkan proyek dalam solusi yang ada dan kemudian Menambahkan referensi DLL dari proyek baru di proyek yang ada. Akhirnya, Anda dapat menggunakan metode kelas tambahan dengan melakukan decalring menggunakan arahan di bagian atas kelas apa pun.
sumber
Pada VisualStudio 2015, jika Anda menyimpan semua kode Anda dalam satu solusi, Anda dapat berbagi kode dengan menambahkan proyek bersama . Kemudian tambahkan referensi ke proyek bersama ini untuk setiap proyek yang Anda ingin gunakan kode, serta arahan penggunaan yang tepat.
sumber
Sekarang Anda dapat menggunakan Proyek Bersama
untuk info lebih lanjut, periksa ini
sumber