2009-01-22 22 views
5

Birden çok Proje dosyası ve birden çok Çözüm dosyasından oluşan bir yazılım projem var. Çözüm dosyaları, Proje dosyalarıyla bire çok ilişkisi vardır ve belirli bir Proje dosyası, birden çok farklı çözüm dosyasında görünebilir.Hangi Visual Studio Çözümlerinin hangi Projeleri kullandığını nasıl haritalandırabilirim?

Çözüm dosyaları ve Proje dosyaları arasındaki ilişkilerin bir haritasının ortaya çıkması için herhangi bir iyi/sağlam yol var mı? Ya VS ya da bir çeşit yarar. "- Çözümler hangi Projeler kullanan söyle lütfen ve bunu benim için harita hey, bu dizini ve alt dizinlerinde Çözüm dosya ve proje dosyalarının bir dizi vardır"

ben yapmak istiyorum ne

demek olduğunu

Net efektin, her bir Çözüm dosyasını açıp denetleyerek üretilebileceğini biliyorum, ancak otomatik, tekrarlanabilir bir eylem arıyorum.

DÜZENLEME: Ayrıca, VS2003'e dayanan Çözüm/Proje kombinasyonlarımdan da korkuyorum, bu yüzden bunları da eşleştirmem gerekiyor.

cevap

1

Hem proje dosyaları hem de çözüm dosyaları metin dosyalarıdır. Proje dosyaları çözümlerini bilmiyor, bu yüzden projelerine yönelik çözümlere bakmamız gerekecek.

çözüm dosyasındaki bir proje giriş şöyle görünür:

Project("{9AC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ProjectName", "ProjectDirectory\ProjectFileName.vcproj","{9A95F635-B74F-4640-BBCF-E324D0972CA9}" 
EndProject 

Yani biz proje adını ve proje dosyasına göreli yolu yakala görebilirsiniz.

Sık kullandığınız komut dosyası dilini kullanarak, aşağıdaki gibi bir şey yapabilirsiniz. Gordon Wilson'ın mesaja ek olarak (yakut Örnek)

require 'find' 

def project_name(string) 
    string =~ /= "(.+?)"/ 
    $1 
end 

#the script doesn't use this method but you may want it 
def project_path(string) 
    string =~ /, "(.+?)"/ 
    $1 
end 

def find_projects(path) 
    puts "#{path} contains the following projects:" 
    open(path).read.gsub(/Project\(.+?EndProject/m) do |match| 
    puts project_name(match) 
    end 
    puts "" 
end 

#change File.dirname(__FILE__)) to the name of the directory you want to search. 
Find.find(File.dirname(__FILE__)) do |path| 
    if FileTest.directory?(path) 
    if File.basename(path) =~ /^\../ # Directory name starts with . 
     Find.prune  # Don't look any further into this directory. 
    else 
     next 
    end 
    elsif path =~ /\.sln$/ 
    find_projects(path) 
    end 
end 
0

Basit bir python (perl?) Betiği, birkaç iyi düzen ile düzenli ifadeler yerleştirir.
Her projenin kendi GUID'si vardır. Haritalamayı bulmak, projelerin GUID'lerini bulmak ve bunları çözüm dosyalarına bakmaktır.

3

, C# aynı şeyi inşa deneyin ve aynı şeyi gösteren bir şema oluşturmak için QuickGraph ve GraphViz kullanabilirsiniz.

QuickGraph, bellekteki grafik yapısını oluşturmak ve Graphviz'ın güzel bir diyagramı yükleyip oluşturabilen bir nokta dosyası oluşturmak için kullanılabilir. Her iki sitede bulunan dokümanlar, işe yarayacak kadar bilgi vermelidir.

** düzenle ** Küçük bir yan proje için here adresine bakın. İstediğiniz şeyi gerçekleştirmeye başladım. Muhtemelen birkaç saat içinde ihtiyacınız olan her şeyi ekleyebilirsiniz. Onu almaktan çekinmeyin ve istediğiniz gibi kullanın, lütfen bize bir yorum bırakın lütfen.

İlgili konular