概要は、どのように私はMSBuildのでMicrosoft.Build.Evaluation.Projectをリロードすることができます14.0
私は、プロジェクトのインスタンスに.csprojをロードし、ディスク上の.csprojを変更し、再ロードしようとすると、 .csproj(アプリケーションを停止することなく)、私の変更は、どこかにキャッシュされているかのように、新しく読み込まれたProjectインスタンスに表示されません。
詳細な手順
私はMSBuildの14.0にMicrosoft.Build.Evaluation.Projectクラスを使用しています。
次のように私はプロジェクトをロード:
MyProject = new Project(fileName);
fileName
は私のローカルマシン上.csprojファイルです。
プロジェクトがメモリにロードされた後、私が示している、それはウォッチウィンドウでAllEvaluatedItems
を評価することによって、Class2.csと呼ばれる特定のファイルが含まれていることを確認します。
"Compile"="Class2.cs" ["Class2.cs"] #DirectMetadata=0 Microsoft.Build.Evaluation.ProjectItem
私はその後開きます。 csprojファイルをテキストエディタで、およびクラス2のエントリを見つける:アプリORIれながら
<Compile Include="Class2.cs" />
次に、私は(私の.csprojファイルからこのエントリを削除しますProjectインスタンスが実行中であることをginallyにロードして)、.csprojファイルを保存します。
次のように私は、プロジェクトをアンロードし、再ロード:
MyProject.ProjectCollection.UnloadProject(MyProject); // call the same code to reload the project from the same .csproj location: MyProject = new Project(fileName);
をプロジェクトがあるかのように最後に、私は、私はクラス2が再び現れる参照、ウォッチウィンドウに新しく作成されたインスタンスのAllEvaluatedItemsを拡大ディスクから再ロードされません。
何かキャッシュがありますか?ディスクからプロジェクトをアンロードして再ロードするには何か他の操作を行う必要がありますか?