2016-03-21 18 views
0

私はC#ソリューションに既存のプロジェクトを追加したいと思っています。私はTryApplyChangesを使用しましたが、それはtrueを返しますが、実際のソリューションへの変更は保存しません。私は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. あなたは非同期呼び出しを待っているわけではないので、それでも行進する前に作業を完了していない可能性があります。

第1のものは明らかにあなたにとって最も重大ですが、他の点も注意する必要があります。

+0

Roslyn。* namespaceを持つ古いroslynを使ってプロジェクトを追加することはできますか? – mohsen

+0

作業領域からサポートされていない場合は、他の方法ですか? – mohsen

+0

古いRoslyn。*名前空間のものは積極的に古代です。どちらもうまくいきません。しかし、いいえ、私たちはこれを実装していないので、完了するまで他に何かをしなければなりません。 –

関連する問題