Kesalahan Waktu Desain Formulir Windows

Saya menggunakan Visual Studio 2008 dan saya mendapatkan pesan kesalahan berikut ketika mencoba membuka salah satu Formulir saya:

Tidak dapat menemukan elemen titik akhir dengan nama 'WSHttpBinding_ICommon' dan kontrak 'CommonWCF.ICommon' di bagian konfigurasi klien ServiceModel. Hal ini mungkin terjadi karena tidak ada file konfigurasi yang ditemukan untuk aplikasi Anda, atau karena tidak ada elemen titik akhir yang cocok dengan nama ini yang dapat ditemukan di elemen klien.

Dan jejak tumpukan berikut

di System.ComponentModel.ReflectPropertyDescriptor.SetValue(Komponen objek, Nilai objek) di System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializePropertyAssignStatement(Manajer IDesignerSerializationManager, pernyataan CodeAssignStatement, CodePropertyReferenceExpression propertyReferenceEx, Boolean reportError) di System.ComponentModel.Design.Serialization. Basis CodeDomSerializer .DeserializeAssignStatement(manajer IDesignerSerializationManager, pernyataan CodeAssignStatement) di System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(manajer IDesignerSerializationManager, pernyataan CodeStatement)

Namun saya memiliki elemen yang disarankan di App.Config saya dan semuanya berfungsi saat run-time. Namun, setiap kali saya mencoba membuka formulir saya mendapatkan pesan ini, yang tidak terlalu buruk karena saya dapat mengabaikannya, tetapi ketika saya melakukan banyak kontrol (kontrol dengan jangkar di sisi kanan dan/atau bawah) digeser dan kisi-kisi saya secara otomatis mendapatkan kembali semua kolom dari sumber datanya yang (kolom) telah saya hapus sebelumnya.

Ada saran/solusi? Apakah ini bug Visual Studio 2008?


person ptutt    schedule 12.01.2009    source sumber


Jawaban (4)


Di mana Anda menggunakan titik akhir? Apakah Anda benar-benar membutuhkannya di sana atau Anda hanya dapat memanggilnya saat runtime? Anda dapat menggunakan properti Component.DesignMode untuk menentukan apakah Anda berada dalam mode desain sehingga Anda dapat mencegah panggilan ke titik akhir dilakukan. Untuk sepenuhnya men-debug pengalaman waktu desain Anda, ikuti petunjuk di ini artikel.

person olle    schedule 13.01.2009
comment
Cemerlang. Ini membantu menemukan kode yang menyebabkan masalah. Tampaknya memindahkan kontrol dan menambahkan kolom kisi adalah masalah terpisah? - person ptutt; 13.01.2009

Ada pendekatan lain untuk men-debug proses devenv (studio visual) dalam waktu desain, seperti yang dinyatakan di sini

Ini membantu ketika membuka formulir dalam mode desain memunculkan pengecualian (yaitu menunjukkan kesalahan kepada pengguna).

Berikut ringkasan dari artikel itu:

  1. Buka contoh Visual Studio baru.
  2. Buka file sumber apa pun. Ini diperlukan agar Visual Studio memungkinkan Anda melampirkan suatu proses.
  3. Lampirkan instance Visual Studio baru ke yang pertama. Proses Visual Studio disebut devenv.exe. Anda hanya perlu melampirkan kode yang dikelola.
  4. Atur Visual Studio agar berhenti pada pengecualian Common Language Runtime - Dilempar dan Ditangani Pengguna. Tutup formulir yang bermasalah, dan buka kembali.

Ini akan menghasilkan pengecualian yang tertangkap di dalam kode Anda pada contoh kedua Visual Studio!

person veljkoz    schedule 25.01.2010
comment
Ini harus diteriakkan dari atas atap! Dalam situasi ini, ini adalah jalur tercepat dan paling langsung yang pernah saya temui untuk menemukan lokasi kesalahan yang tepat. - person Mark Meuer; 17.02.2015
comment
Hebat! Bagi mereka yang mencari item menu yang disebutkan: untuk melampirkan ke proses devenv.exe dari instance VisualStudio kedua Anda, itu adalah Debug -› Lampirkan ke Proses...; untuk pengaturan pengecualian CLR Anda itu (VS2017) Debug -› Windows -› Pengaturan Pengecualian. - person Jinlye; 02.05.2019

saya menggunakan

        if (LicenseManager.UsageMode == LicenseUsageMode.Designtime)
        {
            return;
        }

Untuk memeriksa Mode Desain di Konstruktor jika ia melakukan hal lain selain InitializeComponent() dan Metode Load jika ada.

person Community    schedule 14.07.2009

Saya pernah mengalami kesalahan serupa dalam formulir yang mencoba membuat panggilan database selama inisialisasi konstruktor.

Sayangnya, Component.DesignMode tidak dapat disetel hingga konstruktor selesai!

person Joshua    schedule 13.01.2009