При компіляції вашого проекту Visual Studio повинна зібрати більше 20 проектів? Значить ви, як і я, вже помітили, що ця операція займає пристойно часу. Зараз у нас за раз компілюється 27 проектів і ми знайшли спосіб, як прискорити цей процес.
Для початку треба зробити жорсткий диск в пам'яті. Підійде будь-яка програма, яка на це здатна (наприклад, RamDisk).
Розмір диска залежить від ваших потреб. У підсумку, на диску будуть всі тимчасові файли Windows, а також всі папки bin і obj зі складками ваших проектів.
Створюємо на цьому диску папку Temp і налаштовуємо на неї всі шляхи до папок з тимчасовими файлами в системі.
Для подальшої роботи файл linkd.exe необхідно скопіювати в c: \ WINDOWS \ system32.
За допомогою цієї програми ми можемо створити папку bin нашого проекту на диску в пам'яті і зробити на нього посилання з цієї папки проекту. За рахунок того, що Visual Studio буде компілювати проекти на диск в оперативній пам'яті, ми і хочемо отримати прискорення. Таку операцію треба виконати з усіма папками bin і obj всіх проектів, які беруть участь в складанні. Я написав скрипт на NAnt. який зробить це автоматично, тому що я люблю все автоматизувати. Цей скрипт бере з файлу конфігурації шлях до кореневої папки з проектами і назва диска в пам'яті.
Файл SetUpRamDisk.build містить скрипт:
Якщо у когось є бажання, цей скрипт можна порефакторіть або переписати на іншу мову. Щоб лінковка всіх папок проекту пройшла правильно, потрібно записати ваші параметри в файл конфігурації.
Файл SetUpRamDisk.xml зберігає конфігурацію для скрипта:
Для нормальної роботи скрипта треба створити ще один файл - linker.bat. Він потрібен тільки для того, щоб в нього записався сгерерірованний скрипт і буде містити тільки одну сходинку:
Запускаємо скрипт за допомогою рядка:
NAnt.exe /f:SetUpRamDisk.build go
І останнє, йдемо в настройки самої Visual Studio і виставляємо кількість проектів, яке може компілюватися паралельно. Ця цифра залежить від вашого комп'ютера і самого проекту.
Після всього описаного повна збірка проектів зросла майже в 2 рази. Перекомпіляція проекту після кількох змін відбувається практично за 5 секунд.