Q:
Ketika di compile tidak bermasalah, tapi ketika di jalankan muncul error warning CS1607: Assembly generation -- Referenced assembly 'YourAssembly' is a localized satellite assembly ?
Mengapa ada error setellite assembly? padahal ini hanya exe/dll assembly.
A:
Error di level compiler memang kebanyakkan membingungkan, apalagi informasi-nya sangat minim.
Dan ini terjadi karena al.exe, mencari resources dalam assembly yang sesuai dengan culture-nya (biasanya dalam bentuk satellite assembly).
Ketika di compile dari source code maka 'language compiler' tentu tidak men-check Localize/Globalization parementer. Hasil-nya assembly ter-compile.
Dan ketika di-execute, al.exe (IL to x86 atau x64) akan men-check paramenter Globalization. Dan dia mendapati dalam assembly tidak terdapat culture yang sama antara culture IL dengan default Computer atau entry assembly (kasus dll). Error ini di-invoke.
Bila masih ingin menggunakan globalization, perlu ada pekerjaan sedikit untuk ini.
Jadi mengobati masalah ini cukup mengosongkan di [assembly:AssemblyCultureAttribute("en")] --> [assembly:AssemblyCultureAttribute("")] pada project anda (biasanya ada di Assembly.cs).
The attribute is used by compilers to distinguish between a main assembly and a satellite assembly. A main assembly contains code and the neutral culture's resources. A satellite assembly contains only resources for a particular culture, as in [assembly:AssemblyCultureAttribute("en")]. Putting this attribute on an assembly and using something other than the empty string ("") for the culture name will make this assembly look like a satellite assembly, rather than a main assembly that contains executable code. Labeling a traditional code library with this attribute will break it, because no other code will be able to find the library's entry points at runtime.
MSDN