2014-04-09 42 views
6

csproj dosyalarını okumak, değiştirmek ve yazmak istiyorum. Bu kodu buldum ama maalesef Motor sınıfı değer kaybetti.Program aracılığıyla csproj dosyalarını Microsoft.Build.Evaluation ile değiştirin (Motor yerine)

var collection = new ProjectCollection(); 
collection.DefaultToolsVersion = "4.0"; 
var project = new Project(collection); 

// project.Load("myproject.csproj") There is NO Load method :-(
project.FullPath = "myproject.csproj"; // Instead of load? Does nothing... 

// ... modify the project 
project.Save(); // Interestingly there is a Save() method 

artık hiçbir Load yöntemi yoktur:

Engine engine = new Engine() 
Project project = new Project(engine); 
project.Load("myproject.csproj"); 
project.SetProperty("SignAssembly", "true"); 
project.Save("myproject.csproj"); 

yüzden devam ben Engine yerine Evaluation.ProjectCollection kullanmalıdır ipucu dayalı ettik. FullPath özelliğini ayarlamayı denedim, ancak proje hala boş görünüyor. Bir şey mi özledin?

(Lütfen dikkat: .csproj dosyasının XSD şemasına sahip standart bir XML dosyası olduğunu ve XDocument veya XmlDocument kullanarak okuyabileceğimizi/yazabileceğimizi biliyoruz. Bu bir yedekleme planı. Sadece .Save'i görerek .

yerine yeni projesi oluştururken:) Proje sınıfına yöntemi ben thx)

cevap

9

aslında umarım başkalarına yardımcı olacak, cevap buldum varolan .Csproj yükleyemiyor eğer bir şey kaçırmış düşünüyorum (...) ve .Load (...) denemeye çalışarak, ProjectCollection sınıfının bir fabrika yöntemini kullanmalıyız.

// Instead of: 
// var project = new Project(collection); 
// project.FullPath = "myproject.csproj"; // Instead of load? Does nothing... 

// use this: 
var project = collection.LoadProject("myproject.csproj") 
+0

Yapı dosyalarını yapay bir klasöre bırakmak mümkün mü? – Bandara