c# – Roslyn CodeFix找不到以前创建的AdditionalDocument
发布时间:2020-12-15 21:03:18 所属栏目:百科 来源:网络整理
导读:我正在写一个C#Roslyn Analyzer CodeFix将根据一些变量创建一个新的.txt文件,如果它不存在,它会附加一个新行. 分析器和文件的创建使用RegisterCodeFix中的以下代码完美地工作: var proj = document.Project.AddAdditionalDocument("file.txt","text content
我正在写一个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 我尝试将新文件添加为普通文档而不是添加ExtraDocument,但file.txt创建为源代码文件file.cs而不是.txt文件,但出于某种原因,我可以将其作为文件找到. Project.Documents集合中的cs. 有关如何在CodeFixProvider中创建非源代码文件并使用它的想法? 解决方法
添加文档后,需要将更改应用于工作区:
workspace.TryApplyChanges(proj.Solution); 但是,根据this link,似乎当前错误意味着AddAdditionalDocument()不会将文档保留在内存中的工作区之外,这意味着项目在重新加载时不会有新文档. 此外,AddDocument()仅添加具有与包含项目的语言相对应的扩展名的文档,例如,在C#类库项目上调用AddDocument(),如果不是,则将扩展名重命名为“.cs”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |