PDA

View Full Version : setup و خطاي Strong name vallidation failed



bardia goharbin
یک شنبه 31 شهریور 1387, 18:04 عصر
توسط VS2005 يک برنامه نصب تهيه کرده ام که فايلهاى نرم افزار را نصب ميکند و در کنار آنها يک Dll هم استفاده ميکنم که آنرا نيز همراه با نرم افزار نصب ميکنم. ولي وقتي نرم افزار نصب ميشود هنگام اجراي نرم افزار با خطاي زير که مربوط به عدم درج اسمبلي Dll در ويندوز ميباشد مواجه ميشوم.

Could not load file or assembly, Strong Name validation failed
براي حل اين مشکل بايد بصورت دستي اسمبلي فايل dll را Strong Name Validate کنم که از دستور زير در قسمت Run استفاده ميکنم. و مشکل من حل ميشود و نرم افزار بدون خطا اجرا ميشود.

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn -Vr C:\Program Files\MyBook\soft.dll
چون انجام اين عمليات بصورت دستي براي هر نصب کار جالبي نيست سئوال من اين است که برنامه نصب چرا اسمبلي فايل Dll را اتوماتيک رجيستر و Strong Name Validate نميکند و راه حل آن چيست که برنامه نصب اين کار را اتوماتيک انجام دهد و نياز نباشد بصورت دستي اين کار انجام شود چون نرم افزار بصورت عمومي عرضه خواهد شد.

VisualStudio
یک شنبه 31 شهریور 1387, 21:14 عصر
شما اگر فایل های DLL را کنار خود فایل اصلی قرار بدید مشکل حل میشه

bardia goharbin
یک شنبه 31 شهریور 1387, 21:55 عصر
مطمئنا فايل Dll در کنار فايل اصلي قرار گرفته است. و با Setup هم نصب ميشود. مشکل اصلي اين است که نرم افزار Setup اين Dll يا اسمبلي را براي ويندوز تعريف نميکند. سئوال من اين است که چرا نرم افزار Setup اين Dll را بصورت Strong Name در ويندوز تعريف و Validate نميکند.
همانطور که گفتم بصورت دستي از طريق sn.exe ميتوان Strong Name Validate را براي Dll انجام داد و مشکل را حل کرد ولي از طريق Setup موفق به اين کار نشدم.
آيا راه حلي وجود دارد که با Setupهايي که توسط VS2005 ساخته ميشود اين کار را کرد؟ اگر از طريق اين Setupها امکانپذير نيست آيا از طريق InstallShield يا نرم افزارهاي Setupساز ديگر ميتوان اين عمليات را انجام داد يا خير؟ و يا اگر راه حل ديگري به نظرتان ميرسد پيشنهاد کنيد