我正在尝试通过Roslyn更改现有文件的文件位置。
var msWorkspace = MSBuildWorkspace.Create();
var solution = msWorkspace.OpenSolutionAsync(Constants.pathToSolution).Result;
DocumentId documentIdToMove = ConsoleHelpers.GetDocumentIdForDocumentWithName(solution, "Person.cs");
var newSolution = solution.WithDocumentFolders(documentIdToMove, new List<string> { "SecondLevel", "ThirdLevel" });
msWorkspace.TryApplyChanges(newSolution);
最初,该文件位于主项目文件夹内的“SecondLevel”文件夹中。 根据文档,WithDocumentFolders方法应创建一个新的解决方案实例,其中指定的文档已更新为包含在其中 逻辑文件夹的顺序。
运行代码后,程序完成,没有任何异常,文件在磁盘上更改,但位置保持不变。此外,TryApplyChanges方法返回true。 在项目中创建新文档然后将更改保存到磁盘时,将在文件夹序列指定的位置创建新文件,而不会出现任何问题。
是否更改项目中现有文件的位置,然后将更改保存到磁盘?