Pertanyaan Apa itu file dll.refresh di ASP.Net?


Dalam proyek web ASP.Net kami tampaknya memiliki beberapa file .refresh yang terkait dengan beberapa Dll pihak ketiga yang kami gunakan. Tahu apa itu dan bagaimana / kapan mereka diciptakan?


75
2017-11-03 16:19


asal


Jawaban:


File-file ini memberikan jalur ke DLL yang bersangkutan untuk memberi tahu Visual Studio di mana menemukannya (Anda dapat memeriksa ini jika Anda membukanya dalam editor teks). Mereka akan dibuat setiap kali Anda menambahkan referensi baru ke proyek.

Mereka biasanya muncul ketika Anda menggunakan jenis proyek yang tidak membuat file proyek Visual Studio standar, karena biasanya jalur ke referensi DLL akan masuk ke sana.


61
2017-11-03 16:25



Dari sini:

Dalam proyek ASP.NET, menambahkan referensi berbasis file akan menambahkan file .refresh di folder Bin. Ketika proyek berada di bawah kendali sumber, file ini kemudian ditambahkan ke kontrol sumber. *.dll.refresh file yang mengotori direktori bin. Setiap kali Anda menambahkan referensi eksternal, Anda akan menemukan file dll.refresh tepat di sebelahnya. Ini dll.refresh file adalah pengecualian untuk aturan, dan mereka harus masuk ke kontrol sumber. Ini satu-satunya cara proyek web Anda akan tahu di mana referensi tinggal.


32
2017-11-27 18:56



Beberapa informasi tentang file refresh setelah trial and error. Percobaan ini dilakukan dengan Visual Studio 2012. Referensi ditambahkan ke proyek web C # asp.net.

Seperti yang telah dibahas, menambahkan referensi ke perakitan melalui browse menambahkan file .refresh. Namun, jika ada DLL dependen tambahan pada DLL yang ditambahkan secara eksplisit di direktori yang Anda tambahkan, dependen secara implisit ditambahkan juga, tetapi tanpa file .refresh! Jadi misalnya, saya menambahkan referensi ke "MyAssembly.dll" Saya juga akan mendapatkan "MyAssembly.dll.refresh". Tetapi jika ada perakitan "MyDependentAssembly.dll" yang "MyAssembly.dll" tergantung pada saya tidak akan mendapatkan "MyDependentAssembly.dll.refresh". Jadi yang terjadi adalah bahwa satu rakitan disegarkan tetapi bukan tanggungannya! Anda harus menambahkan DLL satu per satu dalam urutan terbalik ketergantungan dan kemudian semuanya akan bekerja lebih baik.

Beberapa hal lain yang harus diperhatikan. Menambahkan "MyAssembly.dll" juga akan menambahkan "MyAssembly.pdb" jika ada. Juga "MyAssembly.xml" akan ditambahkan ke referensi jika ada. Kedua file itu akan disegarkan juga ketika "MyAssembly.dll.refresh" hadir.

Tapi, kapan Visual Studio memutuskan untuk mencari file refresh? Sekarang ingat, dalam proyek web, file proyek tidak melacak referensi khusus DLL. Anda tidak akan menemukan DLL yang tercantum dalam file proyek hanya dependensi proyek. Jadi kapan penyegaran terjadi?

Jawaban saat penyegaran terjadi adalah saat pembuatan ketika rakitan yang direferensikan harus dimuat. Itu berarti, meskipun membangun situs web prabayar yang dapat diperbarui tidak dapat mengambil semua DLL. Saya terus memiliki DLL yang tidak akan me-refresh dan kemudian saya menyadari itu hanya digunakan di dalam file .ascx. Menghapus centang pada kotak "Izinkan situs yang dikompilasi menjadi dapat diperbarui" di halaman proyek Pilihan MSBuild memperbaiki masalah itu untuk saya.

Namun jika Anda menambahkan referensi DLL yang dimuat melalui refleksi dalam kode Anda, mereka tidak akan diperbarui melalui referensi. Anda harus menggunakan acara membangun untuk menyalinnya ke direktori bin.


4
2018-04-11 21:27