2016-03-21 115 views
0

我想將一個現有項目添加到我的c#解決方案中。我使用TryApplyChanges並返回true,但它不會將更改保存到實際的Solution中。我使用了Microsoft.CodeAnalysis。*版本1.1.1。如何使用roslyn將現有項目添加到c#解決方案中?

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. 您並未等待異步呼叫,因此即使這樣,他們在繼續之前可能還沒有完成工作。

第一個顯然是最關鍵的你,但其他人也應該注意。

+0

我可以使用具有Roslyn。*命名空間的舊roslyn添加項目嗎? – mohsen

+0

如果來自工作空間不支持的是其他方式嗎? – mohsen

+0

舊的Roslyn。*命名空間的東西是古老的;那也行不通。但是,不,我們只是沒有實現這一點,所以在完成之前,你必須做其他事情。 –

相關問題