5

Yaklaşık 80 proje içeren bir VS2008 çözüm dosyasına sahibiz (evet, bunu biliyorum).Büyük bir VS çözümünü daha küçük özümlere bölme

Projeler çeşitli klasörlerde düzenlenmiştir ve bazıları üst düzey bir "Libs" klasöründe diğer 3. taraf DLL'lerine bağlı olabilir.

Bunu, her biri makul sayıda projeyi içeren birkaç daha küçük .sln dosyasına yeniden dahil etmek isteriz.

Sorun, proje dosyalarının etrafından taşınırken, içlerinde saklanan göreceli yollar kırılacak ve bunu düzeltmek için çok sayıda manuel "yama artışı" yapmak zorunda kalacağız.

Böyle bir şey yapmak için herhangi bir araç veya kanıtlanmış bir teknik var mı?

cevap

1

Benzer bir şey yaptık ve referansları düzeltmek için .csproj veya .vbproj dosyalarını (temel olarak xml dosyaları) ayrıştıracak ve .proj dosyasının kendisine göre etkilenen yolları düzeltecek hızlı bir yardımcı program yazdık. Refactoring sonra bulundu. Bu, xml projesini manuel olarak değiştirmekten veya insan hatalarını önlemek için referansların kaldırılmasından daha iyiydi.

Proje dosyasının nerede olduğunu ve genel dosyaların (veya diğer dosyaların) nerede olacağını öğrendikten sonra, proje dosyasındaki Referans düğümünü göreli yolla değiştirirsiniz. Yani mesela için, sen NHibernate.dll şimdi yaşadığı buysa

<Reference Include="NHibernate"> 
     <HintPath>..\Common\ServicesShared\Library\NHibernate.dll</HintPath> 
</Reference> 

için .proj dosyasında orijinal

<Reference Include="NHibernate"> 
     <HintPath>..\..\ServicesShared\Library\NHibernate.dll</HintPath> 
</Reference> 

değiştirmek gerekebilir.

Umarım bu sizin için çalışacaktır.

+0

Teşekkürler. Ayrıca bunun için özel bir yardımcı program oluşturma çizgilerini de düşünüyordum. Örneğinizde, başvurulan DLL'ler için kullanılan gerçek klasörün tamamen değişebileceği (.csproj kopyalama/taşıma işleminin sonucu olarak değil) biraz farklı bir sorun olduğunu gösterdiniz. Bunu işinizde de kullandınız mı? –

+0

Kütüphane klasörü değişikliklerini, taşınan tüm proje dosyalarını değil, kütüphane klasörü olmasa da, gerçek .csproj dosyasının nispeten taşınmış olsaydık bile, benzer bir mantığın hala olabileceğini düşünürdüm. uygulanmalı Her bir proje dosyası seti için tek bir çözüm halinde taşındıklarında, bu projeler için göreli yolların nasıl sabitlenmesi gerektiğini bileceksiniz. Belki de, bir çözümün ait olduğu bir proje dosyası seti için her referans için (önceki, sonraki) bir anahtar değer çifti oluşturabilir ve .proj dosyalarını buna göre güncelleyebilirsiniz. Umarım bu mantıklıdır. – desigeek

İlgili konular