Kadang-kadang ketika saya mengedit halaman atau mengontrol file .designer berhenti diperbarui dengan kontrol baru yang saya tempatkan pada halaman. Saya tidak yakin apa yang menyebabkan ini terjadi, tetapi saya bertanya-tanya apakah ada cara memaksa Visual Studio untuk membuat ulang file .designer. Saya menggunakan Visual Studio 2008
EDIT: Maaf saya seharusnya mencatat saya sudah mencoba:
- Menutup & membuka kembali semua file & Visual Studio
- Membuat perubahan ke kontrol runat = "server" pada halaman
- Menghapus & menambahkan kembali arahan halaman
asp.net
visual-studio
visual-studio-2008
Glenn Slaven
sumber
sumber
<%@ Page
garis petunjuk; 3. Tunggu satu atau dua detik; 4. Pasang kembali ">". 5. Beralih ke file .cs dan Anda akan melihatnya sekarang bebas dari kesalahan referensi kontrol. Saya sudah melakukan ini sejak lama, bekerja setiap saat, di setiap versi VS.Jawaban:
Jika Anda membuka file .aspx dan beralih antara tampilan desain dan tampilan html dan kembali itu akan meminta VS untuk memeriksa kontrol dan menambahkan apa pun yang hilang ke file desainer.
Dalam VS2013-15 ada perintah Convert to Web Application di bawah menu Project . Sebelum VS2013 opsi ini tersedia di menu konteks klik kanan untuk file as (c / p) x. Ketika ini selesai, Anda akan melihat bahwa Anda sekarang memiliki file * .Designer.cs tersedia dan kontrol Anda dalam HTML Desain akan tersedia untuk kontrol Anda.
PS: Ini tidak boleh dilakukan dalam mode debug, karena tidak semuanya "dikompilasi ulang" saat debugging.
Beberapa orang juga melaporkan keberhasilan dengan (membuat salinan cadangan file .designer.cs Anda dan kemudian) menghapus file .designer.cs. Buat kembali file kosong dengan nama yang sama.
Ada banyak komentar untuk jawaban ini yang menambahkan kiat tentang cara terbaik untuk membuat kembali file designer.cs.
sumber
Yah saya menemukan solusi yang berhasil, meskipun saya tidak terlalu menyukainya. Saya harus menghapus file .designer.cs kemudian membuat ulang file kosong dengan nama yang sama. Ketika saya kembali dan menyimpan file aspx lagi, file desainer dibuat ulang.
Cerdik!
sumber
Saya menggunakan metode berikut ini yang berfungsi setiap saat:
Kompilasi ulang.
sumber
<name>.aspx.designer.vb
untuk membuatnya berfungsiBaru-baru ini saya melihat bahwa saya mengalami masalah yang sama. Visual Studio 2010 menolak untuk memperbarui file desainer.
Ternyata, VS tidak memodifikasi file desainer untuk halaman yang menggunakan CodeFile (run off of pages), bukan CodeBehind (DLL). Ini benar, tidak peduli berapa kali Anda menutup VS, memuat ulang proyek, membuat ulang kontrol, atau memodifikasi file. Tidak ada yang akan mendorong VS untuk membuat ulang desainer. Seolah-olah itu tidak membuat file desainer untuk halaman CodeFile tetapi memang mengharuskan itu ada di sana.
Saya mengubahnya menjadi CodeBehind dan menyimpan halaman. File desainer segera diperbarui. Lalu saya baru saja mengubahnya kembali dan semuanya masih emas. Perilaku ini tampaknya baru dengan VS 2010 / .NET 4.0 sebagai VS 2008 secara default tidak menderita dari ini.
Ini bagian ini:
Ubah CodeFile ke CodeBehind, simpan, lalu kembali.
sumber
Ada kemungkinan lain: Anda mungkin memiliki kesalahan dalam file .aspx Anda yang tidak memungkinkan Visual Studio untuk membuat ulang desainer.
Jika Anda beralih ke Tampilan Desain, itu akan menunjukkan kontrol sebagai tidak dapat dirender. Memperbaiki kontrol (dalam kasus saya itu adalah kutipan tambahan di properti) dan kompilasi ulang harus memperbaharui desainer.
sumber
Sebagian besar solusi di sini tidak berfungsi jika Anda menjalankan Visual Studio 2013 dan mungkin 2012. Microsoft mungkin memperkenalkan beberapa optimasi untuk membuat IDE lebih cepat, akibatnya mereka telah mengurangi jumlah kasus yang memicu pembuat kode. Skenario berikut yang digunakan untuk bekerja tidak lagi dilakukan:
Solusinya sangat sederhana, tetapi sedikit rumit. Untuk memicu pembuat kode, ubah sesuatu yang mengharuskan perancang.aspx.cs dibuat. Mengubah konten yang tidak memengaruhi kode, seperti gaya CSS atau menambahkan teks, tidak akan memicu pembuat kode. Anda harus mengubah kontrol yang dirujuk. Inilah cara melakukannya:
Dalam ascx atau aspx ubah ID kontrol
untuk
Buka ascx.cs atau aspx.cs dan pastikan Anda mengganti nama semua referensi menjadi "MyLink" menjadi "theLINK" juga. Simpan dan lakukan pembangunan dan Anda harus pergi dengan baik.
sumber
satu-satunya cara yang saya tahu adalah menghapus file desainer, dan melakukan konversi ke aplikasi web. Namun ketika Anda melakukan ini, biasanya muncul dengan kesalahan, mengapa itu tidak otomatis-regen di tempat pertama, biasanya kontrol ref yang tidak dideklarasikan di bagian atas halaman.
sumber
int Id
properti yang dikompilasi dengan baik di C # karena sensitif huruf. TapiID="ControlName"
di halaman aspx coba lakukanId = "ControlName"
.Convert to Web App
mengatakan sesuatu sepertiControlName cannot be converted to Int32
.Konversi ke Aplikasi Web tidak berfungsi untuk saya.
Menghapus designer.cs dan menempelkan designer.cs kosong juga tidak berhasil.
Tapi ya ini berhasil:
Selesai Perancang.cs baru dihasilkan. :)
sumber
Saya sering menemukan bahwa copy / paste menyebabkan perilaku ini bagi saya. Sebagian besar kasus dapat diselesaikan dengan mengedit ID dari kontrol server (cukup tambahkan karakter, lalu hapus).
Juga ingat bahwa kontrol di dalam hal-hal seperti Pengulang tidak terlihat di file desainer.
Dan ya, ada beberapa kasus di mana Anda perlu melakukan keajaiban delete-the-file yang tercantum di atas - tetapi solusi perubahan nama akan berfungsi sebagian besar waktu.
sumber
Pengalaman saya adalah jika Anda ingin melakukan seperti di artikel ini , seperti yang disebutkan di atas.
File markup Anda (aspx / ascx) harus menyertakan atribut CodeBehind = "MyPage.aspx.cs" atau itu tidak akan berfungsi. Saya menulis blog di sini .
sumber
Saya telah menemukan cara untuk menyelesaikan masalah ini tanpa mengubah kode apa pun atau menjalankan perintah seperti "Konversikan ke Aplikasi Web" - dan juga sederhana!
Apa yang saya temukan adalah me-restart Visual Studio sering memecahkan masalah, tetapi kadang-kadang tidak. Dalam kasus tersebut, jika Anda menutup Visual Studio dan kemudian menghapus semua konten di direktori "obj" untuk proyek web sebelum Anda membukanya lagi, itu selalu bekerja untuk saya.
(ketika mulai lagi Anda hanya menambahkan spasi dan menghapusnya lagi dan kemudian tekan save untuk mendapatkan file desainer dengan benar)
sumber
(Berikut ini berasal dari pengalaman dengan VS2005.)
Jika Anda mengedit halaman ASPX saat debugging, maka codebehind tidak bisa diperbarui dengan kelas baru. Jadi, Anda harus berhenti men-debug, mengedit sepintas halaman ASPX (seperti menambahkan tombol atau sesuatu), lalu klik Tampilan Desain, lalu hapus tombol. Kemudian, file desainer Anda harus diperbarui.
Jika Anda memiliki masalah yang berbeda dengan VS2008, maka saya tidak dapat membantu.
sumber
Saat Anda berada dalam tampilan desain, klik kanan pada layar dan tekan refresh.
sumber
Hal lain yang berhasil adalah -
misalnya:
<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
sumber
Jika Anda menggunakan VS2013 atau yang lebih baru, pastikan kode direferensikan dengan atribut "CodeBehind" bukan "CodeFile", kemudian lakukan langkah-langkah di bawah ini
sumber
sumber
Berikut adalah pengalaman saya, Pilih folder situs web klik kanan di Solution Explorer, pilih Konversikan ke aplikasi Web untuk semua file aspx file desainer akan dihasilkan.
Sameer
sumber
Hanya untuk menambah daftar panjang jawaban di sini - Saya baru saja mengalami masalah ini di VS2010 (SP1) dengan file .aspx. Saya mencoba menambahkan dan menghapus kontrol ASP standar (yang telah bekerja di masa lalu) tetapi pada akhirnya, saya harus menghapus salah satu dari runat = baris server dari kontrol yang ada (dan menyimpan) untuk memaksa file desainer untuk regenerasi.
sumber
Saya telah mengalami masalah yang sama selama bertahun-tahun sekarang, bekerja di Visual Studio 2008. Dan saya sudah mencoba setiap "solusi" di StackOverflow dan puluhan blog, sama seperti saya yakin Anda semua sudah. Dan kadang-kadang mereka bekerja, dan kadang-kadang tidak, sama seperti saya yakin Anda semua pernah bertemu. Dan ternyata itu masih menjadi masalah di VS2010 dan VS2012.
Jadi akhirnya, beberapa bulan yang lalu, saya memutuskan cukup sudah, dan lebih dari beberapa minggu saya membangun alat yang disebut "Redesigner" yang menghasilkan file .designer. Ini open-source di bawah lisensi BSD , dengan kode sumber tersedia di SourceForge - bebas untuk digunakan, bebas untuk mencuri, bebas untuk melakukan apa pun yang Anda suka. Dan ia melakukan apa yang sering gagal dilakukan Visual Studio, yaitu menghasilkan file .designer dengan cepat dan andal.
Ini adalah alat baris perintah yang berdiri sendiri yang mem-parsing file .aspx dan .ascx, melakukan semua sihir refleksi yang diperlukan, dan memuntahkan file .designer yang benar. Itu semua parsing dan refleksi itu sendiri untuk menghindari mengandalkan kode yang ada, yang kita semua tahu terlalu rusak. Ini ditulis dalam C # terhadap. NET 3.5, tetapi itu membuat sulit untuk menghindari bahkan menggunakan System.Web untuk apa pun selain jenis deklarasi, dan tidak menggunakan atau mengandalkan Visual Studio sama sekali .
Redesigner dapat menghasilkan file .designer baru; dan ia menawarkan opsi --verbose sehingga ketika terjadi kesalahan, Anda mendapatkan pesan kesalahan yang jauh lebih baik daripada "Pengecualian jenis Sistem. Pengecualian dilemparkan." Dan ada opsi --verify yang dapat digunakan untuk memberi tahu Anda ketika file .designer Anda yang ada rusak - kontrol yang hilang, deklarasi properti yang buruk, tidak dapat dibaca oleh Visual Studio, atau sebaliknya hanya borked.
Kami telah menggunakannya di tempat kerja saya untuk membuat kami keluar dari kemacetan untuk bagian yang lebih baik dari bulan lalu sekarang, dan sementara Redesigner masih versi beta, itu sudah cukup jauh sehingga layak untuk dibagikan keberadaannya kepada publik. Saya segera bermaksud membuat plugin Visual Studio untuk itu sehingga Anda cukup klik kanan untuk memverifikasi atau membuat ulang file desainer seperti yang selalu Anda inginkan. Namun untuk sementara, penggunaan perintah-baris cukup mudah dan akan menghemat banyak sakit kepala.
Pokoknya, pergi unduh salinan Redesigner sekarang dan berhenti mencabut rambut Anda . Anda tidak akan selalu membutuhkannya, tetapi ketika Anda melakukannya, Anda akan senang memilikinya!
https://sourceforge.net/projects/redesigner/
sumber
TL; DR;
Edit
Inherits
atribut@Page
arahan halaman ASPX dan tekan Save. File desainer Anda harus dibuat ulang.Pastikan bahwa
Inherits
= <namespace>. <class_name> danCodeBehind
= <class_name> .aspx.csSaya mencoba melakukan ini pada proyek Sharepoint 2010, menggunakan VS 2010 dan TFS , dan tidak ada solusi di atas yang bekerja untuk saya. Terutama, opsi, "Konversikan ke Aplikasi Web" hilang dari menu klik kanan file .ASPX saat menggunakan TFS di VS 2010.
Jawaban ini akhirnya membantu . Kelas saya terlihat seperti ini:
Dan
@Page
arahan saya adalah (istirahat di sini untuk kejelasan):Saya pertama kali mengubah
Inherits
ke MyProjects.Finance.Pages , tekan Save, lalu ubah kembali ke MyProjects.Finance.Pages.FinanceSubmission dan tekan Save lagi. Dan wallah! Halaman desainer telah dibuat kembali!Semoga ini bisa membantu seseorang menggunakan TFS!
sumber
Di dalam Visual Studio:
1) Hapus file aspx.designer.cs Anda
2) Klik kanan pada file aspx Anda dan pilih "Konversikan ke Aplikasi Web" Ini akan menambahkan aspx.designer.cs kembali dan terbaru.
Jika Anda mendapat pesan kesalahan:
"Pembuatan file desainer gagal: Metode atau operasi tidak diterapkan."
Coba tutup Visual Studio dan kemudian buka kembali proyek Anda dan lakukan langkah nomor dua lagi
Bagaimana cara menghasilkan aspx.designer.cs di studio visual?
sumber
Langkah 1 : Pilih semua kode aspx Anda, Potong [CTRL + X] kode itu dan Simpan.
Langkah 2 : Sekali lagi tempel kode yang sama di halaman yang sama dan simpan lagi
Sekarang halaman .desinger Anda akan disegarkan dengan semua kontrol di halaman .aspx.
sumber
Hapus file designer.cs dan kemudian klik kanan pada file .aspx dan pilih "Convert To Web Application". Jika ada masalah dengan deklarasi kontrol Anda, seperti tag yang tidak terbentuk dengan baik, Anda akan mendapatkan pesan kesalahan dan Anda harus memperbaiki tag yang salah format sebelum studio visual dapat berhasil membuat ulang file desainer Anda.
Dalam kasus saya, pada titik ini, saya menemukan bahwa masalahnya adalah saya telah mendeklarasikan kontrol tombol yang tidak ada di dalam tag formulir dengan atribut runat = "server".
sumber
Ini adalah bug di IDE; Saya sudah melihatnya sejak VS 2003. Namun solusinya sederhana.
Simpan file Anda. Benar-benar keluar dari IDE (pastikan proses berhenti, mgr tugas.)
Buka kembali solusinya, kotor markupnya, simpan. Tetap.
sumber
Saya memiliki dua masalah ... usang AJAXControlkit - menghapus dll lama, menghapus kontrol lama dari kotak peralatan, mengunduh versi baru, memuat kotak alat, dan menyeret dan menjatuhkan kontrol baru pada halaman (lihat http://www.experts-exchange.com /Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html )
Juga salah mengeja dalam kontrol label saya (menggunakan 'kelas' alih-alih 'cssclass').
Ta
sumber
Saya mempunyai masalah yang tidak dapat dihasilkan oleh kontrol baru saya di file desainer ketika dideklarasikan di file .ascx. Masalahnya adalah bahwa saya menyatakannya dalam kode di belakang juga. Jadi menghapus deklarasi dalam kode di belakang memecahkan masalah saya.
sumber
Jika Anda seperti saya dan Anda menambahkan file .ASPX lama ke proyek yang lebih baru. Anda mungkin akan melupakan beberapa kontrol yang digunakan pada halaman.
Jika demikian, hal pertama, jika ada banyak file yang Anda instal; Perbaiki satu per satu terlebih dahulu.
Saat Anda kompilasi, perbaiki kesalahan yang dihasilkan. Mereka mungkin akan memiliki kesalahan yang sama di semua file.
Selanjutnya, jika Anda memiliki file Desainer, hapus semua file desainer yang dimasukkan. Selanjutnya, pastikan tidak ada kesalahan lain saat Anda kompilasi, selain file desainer.
Terakhir, klik kanan proyek web Anda dan klik Convert to Web Application. Ini akan menyisipkan file desainer yang Anda butuhkan.
Ini adalah langkah terbaik mutlak untuk memperbaiki masalah.
sumber
Satu hal yang tidak ada yang disebutkan adalah mengunjungi halaman . Saya meminta file desainer saya berhenti dibuat ulang karena saya menyertakan kontrol pengguna yang tidak ada (karena berbagai alasan), dan tidak ada hal yang disarankan di sini yang berfungsi. Untuk alasan apa pun, saya tidak mendapatkan kesalahan dalam Visual Studio - selain yang mengeluh tentang fakta bahwa kontrol sisi klien saya tidak ada karena mereka tidak dibuat ulang, tentu saja.
Sebenarnya perlu mengunjungi halaman untuk mendapatkan ASP.Net untuk memberitahu saya kesalahannya.
sumber
Ini juga dapat terjadi jika Anda memperbarui namespace dan tidak memperbarui namespace dalam file desainer. Perbaiki: Perbarui namespace di file desainer juga.
sumber
Solusi yang berhasil bagi saya adalah:
Saya baru saja menyalin halaman dan menempelkannya di bagian yang sama, lalu mengganti nama halaman pertama (nama apa pun) dan mengganti nama halaman yang disalin sebagai halaman asli. Sekarang kontrol dapat diakses.
sumber