Bu yazımda birden fazla proje ile 
MVC Areas oluşturma ve kullanmayı nasıl gerçekleştirebileceğimizi göstermeye çalışacağım ve hazırladığım örneği sizlerle paylaşacağım. Asp.net MVC 2.0 ile gelen önemli bir özellik olan 
Areas özelliği ile hazırlanacak sistemi alt parçalra ayırıp, ayrı ayrı geliştirme yapabiliyoruz. Bunu da tek proje kullanarak veya birden fazla projeyi birleştirerek yapabiliyoruz. Bu yazımda birden fazla proje ile 
Areas özelliğini kullanmayı göstermeye çalışacağım. Tek proje üzerinde 
Areas özelliğini de başka bir yazımda açıklamaya çalışacağım. Şimdi sırayla birden fazla proje kullanarak 
MVC Areas özelliğini nasıl yapacağımıza bakalım.
Öncelikle bu işlem için en güncel MVC sürümünü (
MVC 2.0 Preview 2) ve Visual Studio 2008 Service Pack 1 (veya daha güncel Visual Studio sürümleri)'i kurmuş olmamız gerekiyor. Bu kurulumlar tam ise 
MVC Areas özelliğini kullanmaya başlayabiliriz.
İlk olarak oluşturacağımız çoklu proje yapısında ana proje olacak olan projeyi oluşturuyoruz (Paylaşacağım örnekte proje adı 
MvcAreas). Visual Studio'da 
File ~ New Project sekmesi altında çıkan pencerede 
Asp.Net MVC 2 Web Application seçiyoruz. (
Name olarak istediğimizi veriyoruz. 
Solution olarak 
Create new Solution seçiyoruz.) Bu şekilde ana projemizi oluşturuyoruz. 
Ardından ana proje ile birlikte alt projeleri oluşturuyoruz (Örnekte 
Blog ve 
Forum alt projeleri olacak). Bunun için 
File ~ New Project sekmesini seçip çıkan ekranda aşağıdaki gibi seçim yapıyoruz.
 
Bu şekilde oluşturacağımız alt projelerin hepsini sırayla oluşturuyoruz. Alt projeleri oluşturduktan sonra her alt projeyi ana projeye referans olarak ekliyoruz. Bunun için ana proje üzerinde 
Add Reference diyerek alt projeleri referans olarak ekliyoruz. Aşağıdaki gibi tüm alt projeleri referans olarak ana projeye ekliyoruz.
 
Bu işlemleri yaptıktan sonra oluşan yapının dizin görünümü aşağıdaki olacak.

Ana proje dışındaki alt projelerde bulunan Content (css dosyaları için), Scripts(script dosyaları için) klasörlerini, Global.asax dosyalarını, web.config dosyalarını, Controllers klasörü altında bulunan dosyaları (controller dosyalarını), Views altında bulunan klasör ve web.config dosyalarını siliyoruz. 
Silme işlemlerinden sonra alt projeleri 
Areas özelliğine uygun hale getirmek için her alt proje altındaki Controller klasörü altına ve Views klasörü altına her alt proje için gerekli controller dosyalarını ve view'ları (sayfaları) oluşturmamız gerekiyor. (Alt projelerdeki Controller dosyalarının içeriğini örnekte bulabilirsiniz.)
Dizinleri ayarladıktan sonra her alt projenin ana proje ile çalışmasını sağlayacak olan adımlardan biri olan 
Routes tanımlama işini yapmamız gerekiyor. Bunun için de her alt projeye birer adet .cs uzantılı dosya (
Routes.cs veya başka isimde bir dosya) ekliyoruz ve burada her alt proje için 
Routes tanımlaması yapıyoruz. Tanımladığımız bu Route'ların ana projede tanımlanması için ise ana projemizde bulunan 
Global.asax dosya içinde tanımlanan RegisterRoutes metodu içinde şöyle bir satır ekliyoruz. 
AreaRegistration.RegisterAllAreas(); Bu satırı ekledikten sonra her alt projede tanımlanan Routes'lar ana projeye de yansıyacak ve sorunsuzca çalışacaktır.
Ancak 
Areas özelliğini daha tamamlamadık ve bu şekilde projemiz çalışır durumda değil. Son olarak yapmamız gereken her projeyi unload edip, proje ayarlarının tutulduğu .csproj uzantılı dosyaları düzenlemek olacak. Bunun için her projeyi (ana proje de dahil) 
Solution Explorer'da her proje simgesi üzerinde sağa tıklayıp 
Unload Project diyerek unload ediyoruz. Daha sonra yine 
Solution Explorer'da her proje simgesi üzerinde sağa tıklayıp, 
Edit .....csproj diyerek açılan ekranda Xml formatta olan ve projelerin ayarlarının muhafaza edildiği dokümanda gerekli ayarları yapıyoruz. Burada yapmamız gerekenler zaten yorum (command) ve İngilizce olarak belirtilmiş. 
Areas özellği için belirtilen yerleri düzenliyoruz (uncommand hale getiriyoruz). Ayrıca alt ve ana proje için düzenlenmesi gereken bölümde mevcut. Buraları da alt ve ana projeye uygun olarak düzenliyoruz (uncommand hale getiriyoruz). Burada yaptığımız çoklu projelerde 
Areas özelliğini aktifleştirmek ve kullanmak için gereken ayarlamalar. Bu ayarlar yorum olarak (command) gerekli yerlerde muhafaza edilmiş ve biz bunları yorum olmaktan çıkarıp (uncommand), Areas özelliğini aktifleştiriyoruz.
Tüm bunları yaptıktan sonra artık 
Asp.net MVC Areas özelliği birden fazla proje arasında sağlanmış ve kullanılabilir durumda.
Şimdi çeşitli adımlarda belirttiğim, yapmamız gereken kod değişikliklerine örnek vermek istiyorum. Öncelikle her alt proje içinde tanımlamamız gereken 
Routes'ları tanımladığımız dosyanın içeriğine bakalım (Örnekte paylaştığım 
Blog alt projesi için 
Routes.cs içeriği).
 
namespace Blog
{
  public class Routes : AreaRegistration
  {
    public override string AreaName
    {
      get { return "Blog"; }
    }
    public override void RegisterArea(AreaRegistrationContext context)
    {
      context.MapRoute(
          "Blog_Default",
          "Blog/{action}/{id}",
          new { controller = "Blog", action = "Anasayfa", id = "" }
      );
    }
  }
}
 
 
 
Bu şekilde her alt proje için ayrı ayrı 
Routes tanımlayabiliyoruz. Tanımlanan bu 
Routes'lar ise daha önce belirttiğim gibi ana projede yer alan 
Global.asax dosyası içindeki RegisterRoutes metodu içinde 
AreaRegistration.RegisterAllAreas(); diyerek etkinleştirmiş oluyoruz.
Bunları yaptıktan sonra MVC içinde yer alan ve linkleri oluşturmamızı sağlayan metotları kullanırken ise 
Areas özelliğini aşağıdaki gibi belirtebiliyoruz.
 
<%= Html.ActionLink("Home", "Index", "Home", new { area = "" }, null)%>
<%= Html.ActionLink("Blog", "Anasayfa", "Blog", new { area = "Blog" }, null)%>
<%= Html.ActionLink("Forum", "Anasayfa", "Forum", new { area = "Forum" }, null)%>
 
 
 
Bu şekilde Asp.net MVC ile birden fazla proje kullanarak 
Areas özelliğini kullanmış oluyoruz. Bu yapıyı çok kapsamlı projelerde kullanabiliriz. Büyük projeleri alt sistemlere ayırarak bu şekilde parça parça hazırlayabiliriz. Bu bakımdan oldukça kullanışlı, projelerin yönetimini, denetimini, esnekliğini artıran bir özellik.
Yazımda kullandığım örneği ve çalışır halini 
buradan indirebilirsiniz.
İyi Çalışmalar.
Kaynak