加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读