ویرگول
ورودثبت نام
آمنوتجیکارا
آمنوتجیکارا
خواندن ۱ دقیقه·۴ سال پیش

Fody راهی ساده برای ادغام اسمبلی ها


دیروز داشتم نسخه جدید برنامه ای رو ریلیز میکردم و طبق عادت رفتم از Enigma VB برای پک کردن برنامه استفاده کنم تا همه اسمبلی های برنامه داخل فایل exe قرار بگیرن اما متاسفانه انتی ویروس Eset به عنوان ویروس شناساییش کرد و دیگه نتونستم از Enigma استفاده کنم چون احتمالش بود که روی سیستم های دیگه هم این مشکل پیدا بشه و به اعتبار برنامه ضربه وارد کنه. اومدم از یه راه جایگزین استفاده کردم و با کمک ویژگی هایی که خود ویژوال استودیو در اختیار کاربر میده تونستم اکثر اسمبلی هارو داخل exe بعد از هر بار بیلد بصورت خودکار قرار بدم اما این ویژگی چندتا مشکل داشت، اسمبلی های UnManaged رو نمیشد Embed کرد و همینطور پوشه هایی که داخلشون اسمبلی بود رو هم نمیشد Embed کرد. بعد کمی تحقیق با Fody آشنا شدم البته نه خوده Fody بلکه یکی از افزونه هاش به اسم Costura!

Fody Costura یه بسته ناگت هستش که با نصب روی پروژه بصورت کاملا خودکار و بدون نیاز به کوچکترین کاری تمام اسمبلی هارو داخل فایل exe Embed میکنه! جالبه نه؟

کاستورا ویژگی های زیادی داره از جمله اینکه میتونه اسمبلی های UnManaged رو هم داخل Exe قرار بده، از پوشه ها گرفته تا فایل های pdb و...

البته برای Embed کردن فایل های UnManaged باید کمی دست به کیبورد بشید و باید بصورت دستی خودتون اسمبلی رو معرفی کنید

<Costura> <Unmanaged32Assemblies> Foo32 Bar32 </Unmanaged32Assemblies> <Unmanaged64Assemblies> Foo64 Bar64 </Unmanaged64Assemblies> </Costura>

ویژگی های زیاد دیگه ای هم داره که میتونید از اینجا خودتون مطالعه کنید.

تا یادم نرفته بگم که فودی میتونه هر فایلی که خاصیت Copy Local اون True و Build Action اون Embeded Resource باشه رو داخل Exe قرار بده.


برنامه نویسیتجربهسی شارپwpf
شاید از این پست‌ها خوشتان بیاید