Saya mencoba untuk mengkompilasi addin excel saya menggunakan C # 4.0, dan mulai mendapatkan masalah ini ketika membangun proyek saya di Visual Studio. Penting untuk memberi tahu Anda bahwa saya belum pernah mengalami masalah ini sebelumnya. Apa yang dapat menyebabkan ini terjadi?
c#
visual-studio
.net-4.0
Sergey Kucher
sumber
sumber
bin
danobj
folder proyek Anda, dan bangun kembali proyek tersebut. Terkadang ini berhasil.Jawaban:
Dugaan saya adalah bahwa Anda tidak bekerja dengan majelis yang sangat bernama. Saya mengalami kesalahan ini ketika dua proyek mereferensikan versi yang sedikit berbeda dari perakitan yang sama dan proyek yang lebih tergantung merujuk pada proyek-proyek ini. Resolusi dalam kasus saya adalah untuk menghapus informasi kunci dan versi dari nama majelis di file .csproj (tidak masalah lagi), dan kemudian melakukan build bersih.
Perubahan antara versi perakitan yang berbeda kompatibel dengan bagian-bagian dari solusi yang merujuk kepada mereka. Jika tidak demikian halnya dengan Anda, Anda mungkin harus melakukan lebih banyak pekerjaan untuk menyelesaikan masalah.
NuGet
Dengan NuGet mudah untuk masuk ke situasi ini jika:
Ini menghasilkan dua proyek dalam solusi Anda yang mereferensikan versi berbeda dari rakitan paket itu. Jika salah satu dari mereka merujuk yang lain dan merupakan aplikasi ClickOnce, Anda akan melihat masalah ini.
Untuk memperbaikinya,
update-package [package name]
keluarkan perintah di Nuget Package Manager Console untuk membawa semuanya ke level yang sama, di mana masalah tersebut hilang.Anda harus mengelola paket NuGet di tingkat solusi daripada di tingkat proyek kecuali ada alasan kuat untuk tidak melakukannya. Manajemen paket tingkat solusi menghindari potensi beberapa versi dependensi. Saat menggunakan UI manajemen, jika tab Konsolidasi menunjukkan 1 atau lebih paket memiliki beberapa versi, pertimbangkan untuk mengkonsolidasikannya menjadi satu.
sumber
Ketika saya memiliki masalah ini, saya memperbaikinya dengan mematikan 'Aktifkan pengaturan keamanan ClickOnce'.
Menu: Proyek | Properti 'Nama proyek' ... | Tab keamanan | Kotak centang 'Aktifkan pengaturan keamanan ClickOnce'.
sumber
Lihat jawaban ini .
sumber
Saya punya masalah ini. Itu terjadi karena saya punya banyak proyek yang menunjuk ke perakitan yang sama tetapi dari versi yang berbeda. Saya menyelesaikannya dengan memilih versi yang sama untuk semua proyek dalam solusi saya.
sumber
Jika Anda telah mengubah versi perakitan atau menyalin versi berbeda dari perpustakaan terkelola yang dinyatakan dalam kesalahan, Anda mungkin juga telah mengompilasi file yang merujuk ke versi yang salah. A 'Rebuild All' (atau menghapus Anda 'bin dan' obj 'folder seperti yang disebutkan dalam komentar sebelumnya) harus memperbaiki kasus ini.
sumber
Anda harus menandatangani rakitan dengan kunci. Buka properti proyek di bawah penandatanganan tab:
sumber
Menambahkan solusi saya untuk masalah ini bagi siapa saja yang mungkin bisa membantu.
Saya punya solusi ClickOnce melempar kesalahan ini. Aplikasi mereferensikan folder "Libs" yang umum dan berisi referensi proyek ke a
Foo.dll
. Sementara tidak ada proyek dalam solusi yang mereferensikan salinan statis dariFoo.dll
folder "Libs", beberapa referensi dalam folder itu melakukan (yaitu: solusi saya memilikiLibs\Bar.dll
referensi yang dirujukFoo.dll
.) Karena aplikasi CO menarik semua dependensi dariLibs
serta ketergantungan mereka, kedua salinan masuk ke proyek. Ini menghasilkan kesalahan di atas.Saya memperbaiki masalah dengan memindahkan
Libs\Foo.dll
versi statis saya ke subfolderLibs\Fix\Foo.dll
,. Perubahan ini membuat aplikasi ClickOnce hanya menggunakan versi proyek DLL dan kesalahannya hilang.sumber
Menghapus DLL (di mana kesalahan terjadi) dan membangun kembali solusi memperbaiki masalah saya. Terima kasih
sumber
Jika Anda mencoba semua jawaban lain dalam pertanyaan ini dan Anda:
... Anda mungkin memiliki versi terpisah dari paket NuGet DLL dalam Referensi proyek Anda, karena referensi yang dibuat oleh Intellisense / ReSharper akan menjadi referensi "normal", dan bukan referensi NuGet seperti yang diharapkan, sehingga proses pembaruan NuGet memenangkan ' t temukan atau perbarui!
Untuk memperbaikinya, hapus referensi di Project A, lalu gunakan NuGet untuk menginstalnya, dan pastikan paket NuGet di semua proyek adalah versi yang sama. (seperti yang dijelaskan dalam jawaban ini )
Tip Hidup Pro:
Masalah ini dapat muncul setiap kali ReSharper / Intellisense menyarankan untuk menambahkan referensi ke proyek Anda. Ini bisa jauh lebih berbelit-belit daripada contoh di atas, dengan banyak proyek dan ketergantungan yang saling terkait membuatnya sulit dilacak. Jika referensi yang disarankan oleh ReSharper / Intellisense sebenarnya dari paket NuGet, gunakan NuGet untuk menginstalnya.
sumber
Ketika ini terjadi pada saya dengan WindowsAPICodePack setelah saya memperbaruinya, saya baru saja membangun kembali solusinya.
Build -> Rebuild Solution
sumber
Ada terlalu banyak proyek dalam solusi saya untuk dilalui dan diperbarui secara individual sehingga saya memperbaikinya dengan:
sumber
Membongkar dan memuat ulang proyek masalah menyelesaikannya untuk saya.
sumber
Saya pergi untuk mempublikasikan , file aplikasi, menemukan dll melemparkan kesalahan mengubahnya menjadi 'Sertakan' dari 'Sertakan (Otomatis)'. Saya sekarang bisa menerbitkan.
sumber
Saya mengalami masalah ini setelah melakukan migrasi Addin Excel dari paket.config ke PackageReference. Tampaknya terkait dengan masalah ini .
Berikut ini berfungsi sebagai solusi kasar jika Anda tidak menggunakan ClickOnce (itu akan menghilangkan semua informasi ketergantungan dari
.manifest
file):Temukan bagian yang terlihat seperti ini:
Edit salinan yang diubah namanya dari
.targets
file yang direferensikan (dalam kasus saya, file tersebut diselesaikanC:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets
dan saya membuat salinanMicrosoft.VisualStudio.Tools.Office_FIX.targets
di folder yang sama - tidak memeriksa apakah itu berfungsi dari folder yang berbeda).Temukan
GenerateApplicationManifest
elemen dan ubah atributnyaDependencies="@(DependenciesForGam)"
menjadiDependencies=""
.Ubah bagian yang ditemukan pada 2. sebagai rujukan
.targets
file yang diedit .Ini harus diulang setiap kali versi
.targets
file yang dikirimkan dengan VS diperbarui (atau Anda tidak akan mendapatkan pembaruan), tetapi saya berharap ini akan segera diperbaiki ...sumber
Apakah perakitan Anda ditandatangani dengan benar?
Untuk memeriksanya, tekan Alt + Enter pada proyek Anda (atau klik kanan, lalu Properties). Pergi ke "Masuk". Verifikasi bahwa kotak centang "Masuk majelis" dicentang dan file kunci nama yang kuat dipilih dan "Hanya tunda tanda" tidak dicentang .
sumber
Sekarang, ini adalah pendekatan yang berbeda untuk masalah tersebut:
Klik kanan pada proyek dan pilih opsi 'Bongkar Proyek'. Anda akan melihat bahwa proyek Anda menjadi tidak tersedia.
Klik kanan pada proyek yang tidak tersedia dan pilih opsi 'Edit'.
Gulir ke bawah ke tag '<ItemGroup>' yang berisi semua tag sumber daya.
Sekarang buka referensi yang telah ditampilkan pada daftar kesalahan, Anda akan melihat itu menggunakan satu tag (yaitu
< Reference Include="assemble_name_here, Version=0.0.0.0, Culture=neutral" / >
).Ubah itu menjadi seperti berikut:
.
sumber
Ini disebabkan ketika Anda mengubah versi .dll yang direferensikan. Anda perlu menghapus semua item, atau .dll di folder build target.
sumber
Saya mendapat kesalahan kompilator serupa. Setelah saya menambahkan proyek dependen dari file dll ke solusinya, masalah terselesaikan.
sumber
Jika proyek utama Anda menggunakan beberapa proyek perpustakaan dan memiliki referensi untuk mereka, Anda dapat menyebabkan masalah ini jika proyek Anda merujuk ke file dll perakitan bukan ke proyek perpustakaan ketika Anda mengubah sesuatu di proyek perpustakaan Anda (mis: ganti nama kelas).
Anda dapat memeriksa semua referensi untuk proyek utama Anda dengan melihat di jendela Object Browser (menu View-> Object Browser). Referensi ke file dll selalu memiliki nomor versi. Mis: TestLib [1.0.0.0]
Solusi: hapus referensi saat ini dari proyek utama Anda ke proyek perpustakaan dan tambahkan referensi ke proyek perpustakaan itu lagi.
sumber
Setelah mencoba sebagian besar solusi di sini, saya akhirnya hanya menambahkan referensi ke proyek dari klik sekali proyek, ini mengubahnya menjadi Sertakan (Otomatis) dari Sertakan dan akhirnya berhasil.
sumber
Apa yang membantu saya adalah saya pergi ke Package Manager Solution dan melihat paket yang diinstal yang menyebabkan masalah. Saya melihat bahwa beberapa proyek merujuk paket yang sama tetapi versi yang berbeda. Saya menyelaraskannya berdasarkan kebutuhan saya dan itu berhasil.
sumber
Saya punya ini dalam solusi w / 6 proyek. Salah satu proyek saya merujuk ke majelis bernama sebagai referensi file. Yang lain menunjuk ke referensi proyek.
Saya biasanya mendapatkan kesalahan berbeda dalam kasus ini.
Solusi saya adalah menghapus majelis bernama di mana saja itu direferensikan dan tambahkan kembali. Setelah saya mengerjakan proyek, masalah menghilang. Sebelum melakukan ini, saya mencoba membersihkan solusi serta memastikan tidak ada proyek yang ditandatangani.
semoga membantu seseorang ...
sumber
Jika ini merupakan ketidakcocokan dari dependensi dependensi, pergi ke manajer paket NuGet di tingkat solusi dan periksa tab Perbarui dan Konsolidasi, selaraskan semuanya.
sumber
Saya baru-baru ini mengalami masalah ini. Dalam kasus saya, saya memiliki paket NuGet di majelis yang berbeda. Apa yang saya miliki adalah versi berbeda dari paket NuGet yang sama yang dikaitkan dengan majelis saya sendiri.
Solusi saya adalah menggunakan manajer paket NuGet pada Solusi, sebagai lawan dari proyek individu. Ini memungkinkan opsi "konsolidasi", di mana Anda dapat memutakhirkan paket NuGet Anda di banyak proyek yang Anda inginkan - sehingga semuanya merujuk ke versi yang sama dari perakitan. Ketika saya melakukan konsolidasi, kegagalan build hilang.
sumber
Saya juga menemukan masalah, yang harus saya lakukan hanyalah menghapus .dll (dapat ditemukan dalam referensi) yang menyebabkan kesalahan dan menambahkannya lagi .
Bekerja seperti pesona.
sumber
Coba dengan pembaruan-paket-instal-dependensi
sumber
Cukup buka Publikasikan -> File Aplikasi -> Dan ubah status publikasi dll yang terpengaruh dari prasyarat untuk menyertakan! Ini berhasil untuk saya!
sumber