PodsumowanieJak mogę przeładować Microsoft.Build.Evaluation.Project w MSBuild 14,0
Jeśli załadować .csproj na przykład projektu, zmień .csproj na dysku, a następnie próbować odświeżyć .csproj (bez zatrzymywania aplikacji), moje zmiany nie pojawiają się na nowo załadowanej instancji projektu, tak jakby były gdzieś buforowane.
Szczegółowe kroki
używam klasy Microsoft.Build.Evaluation.Project w MSBuild 14,0.
załadować projekt następująco:
MyProject = new Project(fileName);
fileName
plik jest .csproj na moim komputerze lokalnym.
Kiedy projekt został załadowany do pamięci, to upewnij się, że zawiera ona konkretny plik o nazwie Class2.cs oceniając AllEvaluatedItems
w oknie zegarek, który pokazuje:
"Compile"="Class2.cs" ["Class2.cs"] #DirectMetadata=0 Microsoft.Build.Evaluation.ProjectItem
I wtedy otworzyć. plik csproj w edytorze tekstu i znajdź wpis Class2:
<Compile Include="Class2.cs" />
Następnie usunąć ten wpis z mojego pliku .csproj (gdy aplikacja która Ori załadowany ginally do instancji Project nadal działa) i zapisać plik .csproj.
Następnie rozładować i załadować projekt następująco:
MyProject.ProjectCollection.UnloadProject(MyProject); // call the same code to reload the project from the same .csproj location: MyProject = new Project(fileName);
Wreszcie poszerzyć AllEvaluatedItems nowo utworzonej instancji w oknie zegarka, widzę Class2 pokazać się ponownie, a jeśli projekt jest nie ładuje się z dysku.
Czy jest coś w rodzaju buforowania, które się dzieje? Czy muszę zrobić coś innego, aby wyładować projekt z dysku i załadować go ponownie?