Bagaimana cara memperbaiki kesalahan kompilasi Visual Studio, "ketidakcocokan antara arsitektur prosesor"?

459

Saya baru mengenal konfigurasi proyek di Visual Studio 2010, tetapi saya telah melakukan beberapa penelitian dan masih belum dapat memecahkan masalah ini. Saya punya solusi Visual Studio dengan C ++ DLL referensi C # DLL. C # DLL referensi beberapa DLL lainnya, beberapa di dalam proyek saya dan beberapa eksternal. Ketika saya mencoba untuk mengkompilasi C ++ DLL, saya mendapatkan peringatan ini:

peringatan MSB3270: Ada ketidaksesuaian antara arsitektur prosesor proyek yang sedang membangun "MSIL" dan arsitektur prosesor dari referensi "[internal C # dll]", "x86".

Ini memberitahu saya untuk pergi ke Pengelola Konfigurasi untuk menyelaraskan arsitektur saya. C # DLL diatur dengan target platform x86. Jika saya mencoba mengubah ini ke sesuatu yang lain, seperti CPU Apa pun, itu mengeluh karena salah satu DLL eksternal itu tergantung pada platform target x86.

Ketika saya melihat Manajer Konfigurasi itu menunjukkan Platform untuk C # DLL saya sebagai x86 dan untuk proyek C ++ saya sebagai Win32. Ini sepertinya pengaturan yang tepat; tentunya saya tidak ingin proyek untuk proyek C ++ saya memiliki platform diatur ke x64, yang merupakan satu-satunya pilihan lain yang disajikan.

Apa yang saya lakukan salah di sini?

Paul Eastlund
sumber
Apa keluhannya, khususnya, saat Anda mengubahnya ke CPU Apa saja?
lordcheeto
2
Saya tidak memiliki informasi yang cukup untuk membuat saran, tetapi klik kanan pada solusi Anda -> Proyek Bangun Pesanan dan pastikan bahwa proyek C # Anda dibangun sebelum proyek C ++. Jika tidak, buka tab Dependensi dan beri tahu VS bahwa proyek C ++ bergantung pada proyek C #.
lordcheeto
2
Visual Studio lagi omong kosong ini. Platform di bagian atas layar saya mengatakan x64 tetapi peringatan mengatakan proyek yang sedang dibangun adalah "MSIL". Jadi Visual studio memberi tahu saya bahwa ada ketidakcocokan antara apel dan jeruk ketika saya tidak menggunakan apel. Bisakah kita ganti nama menjadi Visual Stupido?
Paul McCarthy
Sejauh yang saya ketahui ini adalah bug di Visual Studio. Saya memilih x64 sebagai target platform dan memberitahu saya bahwa saya sedang membangun proyek untuk MSIL.
Paul McCarthy
Jawaban singkatnya adalah jika proyek Anda memiliki dependensi pada x86 atau x64, Anda tidak dapat menggunakan CPU apa pun (yang hanya untuk aplikasi .NET murni). Jadi Anda harus membangun untuk x64 atau x32, bukan CPU apa pun. Ini berasal dari jawaban
zar

Jawaban:

513

Peringatan ini tampaknya telah diperkenalkan dengan Visual Studio 11 Beta dan .NET 4.5 baru, meskipun saya kira itu mungkin terjadi sebelumnya.

Pertama, ini hanyalah peringatan. Seharusnya tidak ada salahnya jika Anda hanya berurusan dengan dependensi x86. Microsoft hanya mencoba memperingatkan Anda ketika Anda menyatakan bahwa proyek Anda kompatibel dengan "CPU apa pun" tetapi Anda memiliki ketergantungan pada proyek atau .dll perakitan yang baik x86 atau x64. Karena Anda memiliki ketergantungan x86, maka secara teknis proyek Anda tidak kompatibel dengan "Any CPU". Untuk membuat peringatan hilang, Anda harus benar-benar mengubah proyek Anda dari "CPU apa pun" menjadi "x86". Ini sangat mudah dilakukan, berikut adalah langkah-langkahnya.

  1. Pergi ke item menu Build | Configuration Manager.
  2. Temukan proyek Anda dalam daftar, di bawah Platform itu akan mengatakan "CPU apa saja"
  3. Pilih opsi "Any CPU" dari drop down lalu pilih <New..>
  4. Dari dialog itu, pilih x86 dari drop-down "Platform Baru" dan pastikan "CPU apa pun" dipilih dalam drop-down "Salin pengaturan dari".
  5. Tekan OK
  6. Anda akan ingin memilih x86 untuk konfigurasi Debug dan Release.

Ini akan membuat peringatan hilang dan juga menyatakan bahwa perakitan atau proyek Anda sekarang tidak lagi "Any CPU" yang kompatibel tetapi sekarang spesifik x86. Ini juga berlaku jika Anda membangun proyek 64 bit yang memiliki ketergantungan x64; Anda hanya akan memilih x64 saja.

Satu catatan lain, proyek dapat kompatibel dengan "Apa saja CPU" biasanya jika mereka murni proyek .NET. Masalah ini hanya muncul jika Anda memperkenalkan ketergantungan (dll pihak ke-3 atau proyek yang dikelola C ++ Anda sendiri) yang menargetkan arsitektur prosesor tertentu.

David Sacks
sumber
3
Saya baru saja menginstal RTW dari Visual Studio 2012 dan membuka solusi 2010 yang sudah ada sebelumnya dan mulai melihat peringatan yang sama, jadi itu adalah sesuatu yang masih ada di RTW.
Tod Thomson
4
Yang sedang berkata, saya pikir jawaban David benar, peringatan ini memberi tahu Anda bahwa aplikasi Anda sebenarnya bukan "AnyCPU" sehingga Anda akan mengalami masalah ketika Anda akhirnya menyebarkannya ke arsitektur yang salah.
Tod Thomson
6
Sangat baik BISA menyakiti sesuatu. Setiap exe CPU akan dimuat sebagai x64 pada OS 64 bit dan tidak dapat memuat x86 dll. Jadi, jika Anda memiliki ketergantungan pada platform tertentu, Anda harus mengatur platform Anda dengan benar.
Yaur
1
Menu Bangun sepertinya hilang di VS C # 2010 Express. Bagaimana cara saya mencapainya? Saya berharap mereka tidak menyembunyikan sesuatu.
Xonatron
1
Baru tahu cara mengaktifkan menu build di Visual Studio 2010 Express: Menu alat -> Pengaturan -> pilih 'Pengaturan Pakar'
Xonatron
144

Ini adalah peringatan yang sangat keras kepala dan sementara itu peringatan yang sah ada beberapa kasus di mana itu tidak dapat diselesaikan karena penggunaan komponen pihak ketiga dan alasan lainnya. Saya memiliki masalah yang sama kecuali bahwa peringatan itu karena platform proyek saya adalah AnyCPU dan saya merujuk perpustakaan MS yang dibangun untuk AMD64. Ini ada dalam Visual Studio 2010, dan tampaknya diperkenalkan dengan menginstal VS2012 dan .Net 4.5.

Karena saya tidak dapat mengubah perpustakaan MS yang saya rujuk, dan karena saya tahu bahwa lingkungan penyebaran target saya hanya 64-bit, saya dapat dengan aman mengabaikan masalah ini.

Bagaimana dengan peringatan itu? Microsoft memposting sebagai respons terhadap laporan Connect bahwa satu opsi adalah untuk menonaktifkan peringatan itu. Anda hanya harus melakukan ini karena Anda sangat menyadari arsitektur solusi Anda dan Anda sepenuhnya memahami target penyebaran Anda dan tahu bahwa itu bukan masalah di luar lingkungan pengembangan.

Anda dapat mengedit file proyek Anda dan menambahkan grup properti ini dan pengaturan untuk menonaktifkan peringatan:

<PropertyGroup>
  <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>
Gio Palacino
sumber
1
Satu-satunya referensi resmi MS lainnya untuk solusi ini yang pernah saya lihat adalah dalam file Microsoft .NET Framework 4.5 RC Readme . Anehnya itu dihapus dari file RTM Readme.
JohnC
4
Ini berfungsi, tetapi tidak untuk variasi peringatan: "Unit yang direferensikan ... menargetkan prosesor yang berbeda dari aplikasi". Akan lebih bagus jika ada pengaturan serupa untuk peringatan ini?
Jimmy
6
"Platform proyek saya adalah AnyCPU dan saya merujuk perpustakaan MS yang dibangun untuk AMD64" ... Ini SALAH. Karena penyebaran target Anda selalu 64-bit, Anda dapat mengatur platform Anda ke x64, yang membuat kesalahan yang lebih tepat jika asumsi 64-bit Anda pernah dilanggar, dan juga mencegah peringatan.
Ben Voigt
2
@BenVoigt ide bagus dalam teori, tetapi VS menjadi proses x86 membutuhkan x86 membangun kontrol untuk menjalankan hal-hal seperti Windows Forms Designer, bahkan jika aplikasi Anda hanya akan menjadi 64 bit. Ini adalah alasan yang valid, tetapi disayangkan untuk menggunakan build "Any CPU" palsu.
jrh
1
@ jrh: Lalu masukkan GUI dalam proyek DLL, dan bangun itu sebagai AnyCPU. EXE perlu ditandai dengan arsitektur yang tepat agar sesuai dengan dependensi asli. Pemisahan yang tepat GUI dari logika berjalan jauh (meskipun masih memiliki batas-batasnya, seperti ketika kode asli merender bagian dari GUI, tetapi kemudian dukungan desainer adalah penyebab yang hilang kecuali jika Anda membangun seluruh proyek untuk keduanya x86 dan x64)
Ben Voigt
61

Aturan praktis yang baik adalah "buka DLL, EXE tertutup", yaitu:

  • EXE menargetkan OS, dengan menentukan x86 atau x64.
  • DLL dibiarkan terbuka (yaitu, AnyCPU) sehingga mereka dapat dipakai dalam proses 32-bit atau 64-bit.

Ketika Anda membangun EXE sebagai AnyCPU, semua yang Anda lakukan adalah menunda keputusan tentang apa proses bitness yang akan digunakan untuk OS, yang akan JIT EXE sesuai dengan keinginannya. Yaitu, OS x64 akan membuat proses 64-bit, OS x86 akan membuat proses 32-bit.

Membangun DLL sebagai AnyCPU membuatnya kompatibel untuk proses mana pun.

Untuk lebih lanjut tentang seluk-beluk memuat perakitan, lihat di sini . Ringkasan eksekutif berbunyi seperti:

  • AnyCPU - dimuat sebagai perakitan x64 atau x86, tergantung pada proses pemanggilannya
  • x86 - dimuat sebagai perakitan x86; tidak akan dimuat dari proses x64
  • x64 - dimuat sebagai perakitan x64; tidak akan dimuat dari proses x86
Gustavo Mori
sumber
4
Aturan ini masuk akal bagi saya. Tetapi pertimbangkan situasi berikut: Native.dll (x64) digunakan oleh NetA.dll (Any CPU) yang digunakan oleh NetB.dll (Any CPU) yang digunakan oleh App1.exe (x64). Tidak ada masalah nyata di sini, tetapi mengkompilasi NetA.dll memberi saya peringatan. OK, karena majelis ini secara langsung tergantung pada Native.dll, saya bisa menandainya sebagai x64 juga. Tapi kemudian kompilasi NetB.dll mengeluh. Saya ingin menjaga NetB.dll sebagai "Any CPU" karena ini adalah rakitan umum yang digunakan dalam aplikasi yang berbeda, murni-dot-net. Saya menyimpulkan bahwa satu-satunya pilihan saya adalah menekan / mengabaikan peringatan itu. Iya?
Steve Robbins
2
Karena ketergantungan pada Native.dll, seluruh garis aplikasi / rakitan Anda sekarang x64, baik Anda menekan peringatan atau tidak. Sementara penindasan bekerja dalam skenario Anda, situasi aneh dapat muncul di masa depan. Misalnya, 1) rakitan NetB digunakan di lingkungan x86, di mana Nativex64 tidak akan memuat, atau 2) pelanggan Anda menginginkan versi x86 dari App1.exe, dan Anda menyusun dengan senang hati, karena NetB ditandai sebagai CPU apa pun, tetapi sekali lagi, Nativex64 di bagian atas tumpukan tidak akan memuat
Gustavo Mori
Meskipun aturan Gustavo adalah prinsip yang baik, itu tidak dapat digunakan untuk masalah khusus yang diajukan dalam pertanyaan ini karena proyek sudah memiliki ketergantungan pada majelis pihak ke-3 yang tidak mengikuti aturan (itu x86, bukan AnyCPU). Karenanya selama ada ketergantungan, seluruh rantai proyek harus menargetkan x86 dan tidak ada yang lain.
David Burg
23

C # DLL diatur dengan target platform x86

Yang merupakan jenis masalah, DLL tidak benar-benar bisa memilih bagaimana bitness dari prosesnya. Itu sepenuhnya ditentukan oleh proyek EXE, itulah perakitan pertama yang dimuat sehingga pengaturan target Platformnya adalah yang menghitung dan menetapkan bitness untuk proses tersebut.

DLL tidak punya pilihan, mereka harus kompatibel dengan bitness proses. Jika tidak, maka Anda akan mendapatkan Kaboom besar dengan BadImageFormatException ketika kode Anda mencoba menggunakannya.

Jadi pilihan yang baik untuk DLL adalah AnyCPU sehingga mereka bekerja dengan baik. Itu merek banyak akal bagi C # DLL, mereka melakukan pekerjaan baik cara. Tapi tentu saja, bukan DLL mode campuran C ++ / CLI Anda, ini berisi kode yang tidak dikelola yang hanya dapat berfungsi dengan baik ketika proses berjalan dalam mode 32-bit. Anda bisa mendapatkan sistem build untuk menghasilkan peringatan tentang itu. Itulah tepatnya yang Anda dapatkan. Hanya peringatan, itu masih dibangun dengan benar.

Punt masalah saja. Tetapkan target Platform proyek EXE ke x86, itu tidak akan berfungsi dengan pengaturan lainnya. Dan simpan semua proyek DLL di AnyCPU.

Hans Passant
sumber
1
Jadi, untuk menjadi jelas: Saya tidak membangun EXE, saya sedang membangun DLL untuk dijalankan dengan EXE orang lain. Mengubah target platform C # DLL ke CPU Apa pun tidak menghilangkan peringatan. Saya bertanya-tanya apakah ini adalah kasus connect.microsoft.com/VisualStudio/feedback/details/728901/... - Saya akan mengabaikan peringatan itu sendiri tetapi pada kenyataannya EXE dapat memuat C # DLL tetapi bukan C ++ DLL jadi saya pikir ini adalah masalah nyata.
Paul Eastlund
Apakah Anda sebenarnya menggunakan VS2010? Sama sekali tidak jelas bahwa Anda tidak dapat memuat C ++ / CLI DLL. Apa diagnostiknya? Perbarui pertanyaan Anda dengan info penting ini.
Hans Passant
Belum diposting tentang kegagalan memuat karena saya tidak 100% yakin itu terhubung, dan pada debugging lebih lanjut ternyata tidak. Saya menggunakan VS2010. Teks pertanyaan yang diperbarui. Maaf atas kebingungan
Paul Eastlund
1
Anda tidak mendokumentasikan segala jenis kesalahan atau pengecualian terkait dengan memuat DLL. Saya tidak dapat membantu Anda jika Anda tidak memberi tahu saya apa yang Anda ketahui. Semoga beruntung.
Hans Passant
5

Saya mendapatkan peringatan yang sama dengan yang saya lakukan ini:

  1. membongkar proyek
  2. edit properti proyek yaitu .csproj
  3. tambahkan tag berikut:

    <PropertyGroup>
        <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
            None
        </ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    </PropertyGroup>
    
  4. Muat ulang proyek

gutte yogeshwar
sumber
2
Ini tidak menyelesaikan masalah. Ini hanya menonaktifkan peringatan untuk proyek tertentu. Tetapi dalam beberapa kasus saya menemukan solusi yang valid. Terima kasih!
Tiny
4

Saya memiliki masalah ini hari ini dan hanya melihat konfigurasi bangunan di Visual Studio tidak membantu karena menunjukkan CPU untuk proyek yang tidak membangun dan proyek yang dirujuk.

Saya kemudian mencari di csproj dari proyek referensi dan menemukan ini:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x64</PlatformTarget>

Entah bagaimana PlatformTarget ini ditambahkan di tengah perubahan konfigurasi dan IDE sepertinya tidak melihatnya.

Menghapus baris ini dari proyek yang dirujuk menyelesaikan masalah saya.

JBourne
sumber
Butuh satu hari penuh untuk memikirkan ini. Terima kasih banyak! :)
SohamC
3

Jika C # DLL Anda memiliki dependensi berbasis x86, maka DLL Anda sendiri harus x86. Saya tidak benar-benar melihat jalan keluarnya. VS mengeluh tentang mengubahnya menjadi (misalnya) x64 karena eksekusi 64-bit tidak dapat memuat pustaka 32-bit.

Saya agak bingung tentang konfigurasi proyek C ++. Pesan peringatan yang disediakan untuk build menunjukkan bahwa itu ditargetkan untuk AnyCPU, karena melaporkan platform yang ditargetkan adalah [MSIL], tetapi Anda mengindikasikan bahwa konfigurasi untuk proyek tersebut sebenarnya adalah Win32. Aplikasi Win32 asli tidak boleh melibatkan MSIL - meskipun mungkin perlu memiliki dukungan CLR diaktifkan jika sedang berinteraksi dengan perpustakaan C #. Jadi saya pikir ada beberapa celah di sisi informasi.

Bisakah saya dengan hormat meminta Anda meninjau dan memposting sedikit lebih detail dari konfigurasi yang tepat dari proyek dan bagaimana mereka saling terkait? Dengan senang hati membantu lebih lanjut jika memungkinkan.

David W
sumber
3

Selain David Sacks jawaban, Anda juga mungkin perlu untuk pergi ke Buildtab Project Propertiesdan set Platform Targetuntuk x86untuk proyek yang memberikan Anda peringatan ini. Meskipun Anda mungkin mengharapkannya, pengaturan ini tampaknya tidak disinkronkan dengan pengaturan di manajer konfigurasi.

Dave Cousineau
sumber
2

Untuk proyek C #, target x86 melakukan seperti apa rasanya. Dikatakan bahwa perakitan ini hanya mendukung arsitektur x86. Demikian juga untuk x64. CPU di sisi lain mengatakan bahwa saya tidak peduli arsitektur mana, saya mendukung keduanya. Jadi, 2 pertanyaan berikutnya adalah (1) apa konfigurasi dari executable yang menggunakan dll ini? dan (2) apa itu bitnessOS / Komputer Anda? Alasan saya bertanya adalah karena jika executable Anda dikompilasi untuk berjalan dalam 64-bit, maka ia MEMBUTUHKAN semua dependensi untuk dapat berjalan dalam mode 64-bit juga. Unit CPU apa pun Anda harus dapat dimuat, tetapi mungkin referensi beberapa ketergantungan lain yang hanya mampu berjalan dalam konfigurasi x86. Periksa semua dependensi dan dependensi-of-dependensi untuk memastikan semuanya "CPU apa pun" atau "x64" jika Anda berencana untuk menjalankan executable dalam mode 64-bit. Kalau tidak, Anda akan memiliki masalah.

Dalam banyak hal, Visual Studio tidak membuat kompilasi campuran dari CPU Apa pun dan berbagai rakitan bergantung arsitektur mudah. Itu bisa dilakukan, tetapi sering kali mengharuskan bahwa sebuah rakitan yang seharusnya "Setiap CPU" harus dikompilasi secara terpisah untuk x86 dan x64 karena beberapa dependensi-of-a-dependensi di suatu tempat memiliki dua versi.

Jonathan DeCarlo
sumber
Apakah konfigurasi masalah yang dapat dieksekusi relevan karena saya mendapatkan kegagalan hanya dalam mencoba membangun DLL? (Ini x86.) Komputer saya x64.
Paul Eastlund
2
Ini adalah executable yang menentukan bitness apa yang akan digunakan. Jika executable berjalan sebagai x64, maka apa pun yang dimuat (langsung atau tidak langsung) harus x64 atau CPU apa pun. Jika executable berjalan sebagai x86, maka segala sesuatu yang dimuat (langsung atau tidak langsung) harus x86 atau CPU apa pun.
Jonathan DeCarlo
1

Saya pernah mengalami masalah yang sama sebelumnya, khususnya ketika menambahkan solusi pengujian ke solusi x64 yang ada, seperti SharePoint. Dalam kasus saya, ini sepertinya ada hubungannya dengan fakta bahwa templat proyek tertentu ditambahkan sebagai platform tertentu secara default.

Inilah solusi yang sering berhasil bagi saya: atur semuanya ke platform yang benar di Configuration Manager (konfigurasi drop-down yang aktif, kata Debug secara normal, adalah cara yang baik untuk sampai ke sana) dan platform proyek (di properti proyek), kemudian bangun, lalu atur semuanya kembali ke AnyCPU. Kadang-kadang saya harus menghapus dan menambahkan kembali beberapa dependensi (DLL di setiap proyek properti) dan kadang-kadang "Jalankan tes dalam proses 32 bit atau 64 bit" (klik dua kali pengaturan Local.tests dan pergi ke Host) harus diubah.

Sepertinya saya hanya mengatur sesuatu kemudian mengembalikannya, tetapi mungkin ada lebih banyak yang terjadi di balik layar yang tidak saya lihat. Ini bekerja cukup konsisten untuk saya di masa lalu.

ssamuel
sumber
1

Untuk proyek saya, saya memiliki persyaratan untuk dapat membangun x86 dan x64. Masalah dengan ini adalah bahwa setiap kali Anda menambahkan referensi saat menggunakan satu, maka itu mengeluh ketika Anda membangun yang lain.

Solusi saya adalah mengedit file * .csproj secara manual sehingga baris-baris seperti ini:

<Reference Include="MyLibrary.MyNamespace, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86"/>

<Reference Include="MyLibrary.MyNamespace, Version=1.0.0.0, Culture=neutral, processorArchitecture=AMD64"/>

<Reference Include="MyLibrary.MyNamespace, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"/>

diubah menjadi ini:

<Reference Include="MyLibrary.MyNamespace, Version=1.0.0.0, Culture=neutral"/>
Thick_propheT
sumber
1

Saya punya masalah serupa itu disebabkan oleh MS UNIT Test DLL. Aplikasi WPF saya dikompilasi sebagai x86 tetapi unit DLL uji (direferensikan file EXE) sebagai "Any CPU". Saya mengubah unit test DLL untuk dikompilasi untuk x86 (sama seperti EXE) dan telah di-resov.

pengguna1257110
sumber
0

Harus ada cara untuk membuat .NET EXE / DLL AnyCPU, dan setiap DLL yang tidak dikelola tergantung pada kompilasi keduanya dengan x86 dan x64, keduanya dibundel mungkin dengan nama file yang berbeda dan kemudian .NET module secara dinamis memuat yang benar berdasarkan pada saat runtime arsitektur prosesor. Itu akan membuat AnyCPU kuat. Jika C ++ DLL hanya mendukung x86 atau x64 maka AnyCPU tentu saja tidak ada gunanya. Tetapi ide kedua bundling yang belum saya lihat diimplementasikan karena manajer konfigurasi bahkan tidak menyediakan sarana untuk membangun proyek yang sama dua kali dengan konfigurasi / platform berbeda untuk beberapa bundling yang memungkinkan AnyCPU atau bahkan konsep lain seperti konfigurasi apa pun dimungkinkan.

Gregory Morse
sumber
2
selamat datang di stackoverflow! dapatkah kamu mencoba memfokuskan / memformat ulang jawaban ini sedikit?
Corley Brigman
Sepertinya ini akan menjadi pertanyaan yang bagus, atau posting blog atau permintaan fitur di Connect ... sebenarnya tidak menjawab yang ini.
Ben Voigt
0

Saya memiliki peringatan yang sangat mirip dalam bangunan saya. Proyek saya ditetapkan untuk menargetkan .NET 4.5, pada server build, Windows 8.1 SDK (untuk .NET 4.5.1) diinstal. Setelah memperbarui proyek saya untuk menargetkan .NET 4.5.1 (bukan masalah bagi saya, adalah untuk aplikasi yang benar-benar baru), saya tidak menerima peringatan lagi ...

NicoCV
sumber
0

Saya memecahkan peringatan ini dengan mengubah "Configuration Manager" menjadi Release (Mixed Plataform).

Edu Pelais
sumber
0

Saya mendapat peringatan ini di Visual Studio 2012 ketika menyusun tugas skrip pipa SSIS SQL Server 2012 SP1 - sampai saya menginstal SQL Server 2012 SP2.

pendiam
sumber
0

Saya memiliki masalah yang sama dengan koneksi pembukaan SQLite, dan menggunakan Nuget dan menginstal komponen yang digunakan dalam proyek (SQLite) memperbaikinya! coba pasang komponen Anda dengan cara ini dan periksa hasilnya

StudioX
sumber