通过 Roslyn 更改文件夹列表后文件位置未更改
Location of file is unchanged after changing List of folders via Roslyn
我正在尝试通过 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 方法 returns 为真。
在项目中创建新文档然后将更改保存到磁盘时,新文件会在文件夹序列指定的位置创建,没有任何问题。
是否可以更改项目中现有文件的位置,然后将更改保存到磁盘?
不支持像这样更改文件夹。随意 file a bug on GitHub.
我正在尝试通过 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 方法 returns 为真。 在项目中创建新文档然后将更改保存到磁盘时,新文件会在文件夹序列指定的位置创建,没有任何问题。
是否可以更改项目中现有文件的位置,然后将更改保存到磁盘?
不支持像这样更改文件夹。随意 file a bug on GitHub.