Memperbaiki Kegagalan Build sgen.exe
di Visual Studio
Jika Anda mengalami masalah dengan sgen.exe
yang gagal selama proses build di Visual Studio, Anda tidak sendirian. Banyak pengembang menghadapi kesalahan ini, terutama setelah memodifikasi direktori output proyek mereka. Panduan ini akan membantu Anda memahami masalah ini dan memberikan solusi untuk memperbaikinya secara efektif.
Memahami Masalah
Mengubah direktori output proyek Visual Studio Anda dapat menyebabkan sgen.exe
gagal dengan kesalahan berikut:
Error: The specified module could not be found. (Exception from HRESULT: 0x8007007E)
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1902,9): error MSB6006: "sgen.exe" exited with code 1.
Kesalahan ini biasanya terjadi karena jalur yang diteruskan ke sgen.exe
dalam konfigurasi build Anda tetap tidak berubah setelah perubahan direktori output.
Gejala Masalah
- Proses build gagal, memunculkan kesalahan terkait
sgen.exe
. - Bahkan setelah mengubah pengaturan konfigurasi, kesalahan tetap ada.
- Solusi sementara mungkin menonaktifkan fitur penting seperti pembuatan serialisasi.
Solusi untuk Masalah
Pendekatan 1: Konfigurasi Manual sgen.exe
Salah satu metode yang efektif untuk mengatasi masalah ini adalah dengan menyesuaikan parameter untuk sgen.exe
secara manual di dalam file proyek Anda.
Langkah untuk Menyesuaikan Opsi sgen.exe
:
-
Buka File Proyek Anda
Gunakan editor teks pilihan Anda untuk membuka file.csproj
atau.vbproj
. -
Modifikasi Definisi Target
Anda dapat menambahkan target yang memberi tahusgen.exe
untuk secara eksplisit menentukan opsi pembuatan serializer. Misalnya:<Target Name="GenerateSerializationAssembliesForAllTypes" DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" Outputs="$(OutputPath)$(_SGenDllName)"> <SGen BuildAssemblyName="$(TargetFileName)" BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)" ShouldGenerateSerializer="true" UseProxyTypes="true" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)"> <Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" /> </SGen> </Target>
-
Kunci Perubahan
Pastikan Anda mengatur atribut UseProxyTypes menjaditrue
, yang memungkinkan Anda mengontrol cara tipe diserialisasi. -
Bangun Kembali Proyek Anda
Setelah perubahan disimpan, bangun kembali proyek Anda di Visual Studio untuk menerapkan konfigurasi baru.
Pendekatan 2: Dokumentasi Referensi
Untuk pemahaman yang lebih baik dan kustomisasi lebih lanjut, pertimbangkan untuk merujuk ke dokumentasi resmi MSDN untuk sgen.exe
, di mana Anda dapat menemukan opsi dan parameter yang tersedia untuk alat tersebut.
Sumber lain dapat ditemukan di posting blog ini yang membahas nuansa sgen
dan tips untuk mengelola serialisasi secara efektif.
Rekomendasi Tambahan
-
Hapus
.XmlSerializers.dll
Sebelumnya
Jika Anda terus menghadapi masalah, pertimbangkan untuk menghapus file.XmlSerializers.dll
di direktori output untuk memastikan kondisi bersih. -
Periksa Kembali untuk Memastikan Referensi yang Tepat
Pastikan semua jalur ke assembly tergantung masih valid setelah mengubah lokasi output.
Kesimpulan
Menghadapi kegagalan sgen.exe
bisa sangat frustrasi, terutama di tengah jadwal pengembangan yang ketat. Dengan menyesuaikan file proyek Anda dan mengelola konfigurasi dengan hati-hati, Anda dapat menyelesaikan masalah ini secara efisien. Ingat untuk menjaga cadangan file proyek asli Anda sebelum melakukan perubahan besar.
Dengan strategi ini, Anda seharusnya siap untuk mengatasi dan mencegah kesalahan build di masa depan yang terkait dengan sgen.exe
di Visual Studio!