2016-03-21 20 views
0

Varolan bir projemi C# çözümüme eklemek istiyorum. TryApplyChanges'i kullandım ve doğru olarak döndü, ancak değişiklikleri gerçek Çözüm'e kaydetmiyor. Microsoft.CodeAnalysis. * Sürüm 1.1.1 kullandım.Varolan projeyi roslyn ile C# çözümüne nasıl eklersiniz?

public void AddProject (string solutionName) 
{ 
    MSBuildWorkspace ws=MSBuildWorkspace.Create(); 
    ws.OpenSolutionAsync (solutionName); 
    ws.OpenProjectAsync ("ProjectName"); 
    if (ws.TryApplyChanges (ws.CurrentSolution) 
    {// break point is here 
    } 
} 
+0

Bunu çok karıştırıyorsunuz. Bir çözümü değiştirmek, [VS otomasyon arayüzü] kullanan bir eklenti gerektirir (https://msdn.microsoft.com/en-us/library/y849h0w1.aspx). –

cevap

1

Kodunuzdaki ile birkaç sorun vardır:

  1. MSBuildWorkspace değil (şu anda) desteği ekleyerek/veya çalışma alanından projeleri kaldırılması ve geri çözüm dosyasına kaydederek yapar. Bunu iyileştirmek istiyorsanız We're open source.
  2. OpenProjectAsync'i çağırmak, beklediğiniz gibi bir çözümü gerçekten değiştirmesi beklenmiyor ... sadece çalışma alanını bilgi ile doldurur.
  3. Async çağrılarını beklemiyorsunuz, bu yüzden bile onlar yürüyüşe çıkmadan önce çalışmalarını bitirmemiş olabilirler.

Birincisi sizin için en önemli olanıdır, ancak diğerleri de not edilmelidir.

+0

Roslyn'e sahip eski roslyn ile proje ekleyebilir miyim. * Namespace? – mohsen

+0

Çalışma alanından desteklenmiyorsa, başka bir yol var mı? – mohsen

+0

Eski Roslyn. * Ad alanı şeyleri eskidir; Bu da işe yaramaz. Ama hayır, bunu henüz gerçekleştirmedik, bu yüzden bitene kadar başka bir şey yapmanız gerekecek. –

İlgili konular