عنوان:

‫ابزاری برای تغییر خودکار ارجاعات پروژه برای کار با SVN SourceControl


نویسنده: بهزاد
تاریخ: ۱۳۹۲/۰۲/۰۲ ۱۱:۳۵
آدرس: www.dntips.ir
ما در شرکت برای Source Control از SVN استفاده می‌کنیم، مزایای سورس کنترل آنقدر واضح است که دیگه من اینجا چیزی ازش نمیگم
اما برای استفاده از سورس کنترل یک مشکلی وجود دارد، اگر شما تعدادی پروژه را به کاربران خاصی بدین و تعدادی رو ندین، اون کاربر وقتی پروژه‌ها را می‌گیره با مشکل ارجاعات پروژه‌ها مواجه است. چرا که برخی از پروژه‌های ارجاعی، روی کامپیوتر برنامه نویس 1 وجود نداره. برعکس ش هم همین طوره، چون اون کاربر، پروژه‌های ارجاعی رو نداره، باید به جاش به اسمبلی نهایی اون پروژه ارجاع بده. بنابراین وقتی مدیر پروژه‌ها رو می‌گیره، باز ارجاعات اشتباه هستند!
ما اینجا برای رفع این مشکل ابزاری درست کردیم، به اسم SolutionExplorer.
این ابزار فایل solution رو به همراه پوشه حاوی فایل‌های اسمبلی می‌گیره. اگر پروژه ای به اسمبلی ای ارجاع داده باشه که پروژه اش توی solution باشه، ارجاع به اسمبلی رو تبدیل میکنه به ارجاع به پروژه و برعکسش، اگر پروژه ای به پروژه دیگه ای ارجاع داده باشه که توی solution وجود نداشته باشه، توی پوشه اسمبلی ها، دنبال اسمبلی ای می‌گرده که اسمش شبیه اسم پروژه ارجاعی باشه و اگر پیدا کنه، ارجاع رو عوض می‌کنه
البته برای جلوگیری از به هم ریختگی، نرم افزار از فایل‌های پروژه ای که دستکاری می‌کنه، پشتیبان می‌گیره
توجه:
* این برنامه از تمامی جهات تست نشده است، با ریسک خودتون ازش استفاده کنید (ما تو شرکت دیگه ریسکی نداریم :) )
* سیستم نامگذاری اسمبلی‌ها و پروژه‌های ما ممکنه فرق کنه
* اگر به مشکلی برخوردید، لطفا زیر همین مطلب برام بنویسید
* انتخاب پوشه اسمبلی ها، الزامی نیست

نظرات

  • محسن خان در ۱۳۹۲/۰۲/۰۲ ۱۱:۴۰

    ممنون. ایده خوبی هست.

    یک روش دیگر هم استفاده از نیوگت هست برای مدیریت لوکال وابستگی‌ها

    Creating and then using a NuGet local repository

    How to access NuGet when NuGet.org is down

    • بهزاد در ۱۳۹۲/۰۲/۰۲ ۱۱:۴۲
      در مورد وابستگی‌های نوگت کاری نکردیم، فقط در مورد پروژه‌ها و اسمبلی هاست
      • محسن خان در ۱۳۹۲/۰۲/۰۲ ۱۲:۳۰
        نیوگت لوکال روی شبکه می‌تونید تعریف کنید بر اساس وابستگی‌های داخلی خودتون. یعنی کاملا مستقل از نیوگت روی اینترنت.
  • یوسف نژاد در ۱۳۹۲/۰۲/۰۳ ۸:۲۹
    شما میتونین خروجی تمام پروژه‌های ریفرنس داده شده در پروژه‌های دیگه رو به یک مسیر مشخص و مشترک تنظیم کنید. تمام پروژه‌ها هم ریفرنس خودشون رو از اون مسیر مشخص بگیرن. سپس فایلهای dll. یا exe. موردنظر رو بصورت multi-check out تنظیم کنید. بعدش هرکسی که آخرین نسخه از اون کتابخونه رو داره توسعه میده هر روز چکین کنه و بقیه هم هر روز get latest کنن. کاری که ما داریم به راحتی در شرکت خودمون انجام میدیم.
    • سیروس در ۱۳۹۲/۰۲/۰۳ ۱۳:۳۱
      ما هم از این روش استفاده می‌کنیم.
  • منیژه محمدی در ۱۳۹۲/۰۸/۲۶ ۲۱:۱۳
    در مورد TFS چطور ؟ در مورد ان پیشنهادی ندارید؟