我有一个项目参考,并且正在通过AddDocument()向该项目添加一个新文档.问题是,无论我向呼叫发送什么内容,新文件总是以项目的根目录结尾.我试过在文件名前添加一个子目录:
project.AddDocument(@"\GoHere\MyNewFile.cs", ...)
但这不起作用.这也没有:
project.AddDocument(@"\GoHere\MyNewFile.cs", ..., filePath: @"C:\ProjectPath\GoHere");
我也尝试了其他选择,但无济于事.编译器API中是否可以通过某种方式将文件添加到不存在的新子目录中的项目中?如果是这样,怎么办? TIA.
解决方法:
我认为您只需要在AddDocument
上使用可选参数文件夹
SourceText text;
List<string> folders = new List<string>() { "GoHere" };
project.AddDocument(@"MyNewFile.cs", text, folders: folders);
因为您提到了VS,所以我只是从VSPackage的Initialize()中仔细检查了一下.
var componentModel = (IComponentModel)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SComponentModel));
var workspace = componentModel.GetService<VisualStudioWorkspace>();
var sourceText = SourceText.From("Test");
var folders = new List<string>() { "GoHere" };
var proj = workspace.CurrentSolution.Projects.Single();
var document = proj.AddDocument("Test.cs", sourceText, folders);
var result = workspace.TryApplyChanges(document.Project.Solution);
似乎正确添加了文档:
标签:roslyn,c 来源: https://codeday.me/bug/20191119/2033810.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。