gpt4 book ai didi

c# - Roslyn CodeFix 找不到以前创建的 AdditionalDocument

转载 作者:行者123 更新时间:2023-11-30 12:56:32 24 4
gpt4 key购买 nike

我正在编写一个 C# Roslyn Analyzer & CodeFix,它将根据一些变量创建一个新的 .txt 文件(如果它不存在),如果存在,它将追加一个新行。使用 RegisterCodeFix 操作中的以下代码,分析器和文件的创建工作完美:

var proj = document.Project.AddAdditionalDocument("file.txt",
"text content");
return proj.Solution;

虽然,当我尝试搜索项目的集合 AdditionalDocuments 时,它是空的,即使文件是先前创建的(并且项目已保存,如果重要的话)。

var doc = document.Project.AdditionalDocuments.FirstOrDefault(x =>
x.Name == "file.txt"); //doc is null

我尝试将新文件添加为普通 Document 而不是 AdditionalDocumentfile.txt 是作为源代码文件创建的file.cs 而不是 .txt,但是出于某种原因,我可以在 中找到它作为 file.cs >Project.Documents 集合。

关于如何在 CodeFixProvider 中创建非源代码文件并使用它有什么想法吗?

最佳答案

添加文档后,您需要将更改应用到您的工作区:

workspace.TryApplyChanges(proj.Solution);

然而,根据this link ,似乎当前的错误意味着 AddAdditionalDocument() 不会将文档保存在内存中的 workspace 之外,这意味着项目在重新加载时不会有新文档。

此外,AddDocument() 只会添加扩展名与包含项目的语言相对应的文档,例如,在 C# 类上调用 AddDocument()库项目,如果尚未将扩展名重命名为“.cs”。

关于c# - Roslyn CodeFix 找不到以前创建的 AdditionalDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40693566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com