2016-03-21 3 views
0

Я хочу добавить существующий проект в свое решение C#. Я использовал TryApplyChanges, и он возвращает true, но не сохраняет изменения в реальном решении. Я использовал Microsoft.CodeAnalysis. * Версия 1.1.1.Как добавить существующий проект в решение C# с roslyn?

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

Вы плохо смешиваете это. Для изменения решения требуется добавление, которое использует интерфейс управления VS (https://msdn.microsoft.com/en-us/library/y849h0w1.aspx). –

ответ

1

Там же несколько проблем с вашим кодом:

  1. MSBuildWorkspace нет (в настоящее время) поддерживают добавление/или удаление проектов из рабочей области и сохранения их обратно в файл решения. We're open source, если вы хотите изучить это.
  2. Вызов OpenProjectAsync на самом деле не требует изменения решения, поскольку вы ожидаете этого ... он просто заполняет рабочую область информацией.
  3. Вы не ожидаете вызовов Async, поэтому даже тогда они, возможно, не закончили свою работу, прежде чем идти дальше.

Первый, очевидно, самый важный для вас, но следует отметить и другие.

+0

Могу ли я добавить проект со старым roslyn, у которого есть Roslyn. * Namespace? – mohsen

+0

Если из рабочего пространства не поддерживается какой-либо другой способ? – mohsen

+0

Старое здание Roslyn. * Namespace является положительно древним; это тоже не сработает. Но нет, мы просто не реализовали это, поэтому, пока это не будет сделано, вам нужно будет сделать что-то еще. –

Смежные вопросы