ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-如何使用Roslyn加载现有程序集,对其进行转换并生成新的.cs文件

2019-10-31 00:09:18  阅读:528  来源: 互联网

标签:roslyn c


好像缺少有关Roslyn的文档?
我找不到很好的综合文档.

我实际上要做的是复制现有API(.dll)的公共表面
放入一个新的程序集中(需要创建源代码.cs文件!),同时对所生成的代码进行各种转换(请考虑制作包装器类).

我将非常感谢您对如何使用Rolsyn从现有程序集中加载初始SyntaxTree以及如何进行这些基本转换(例如,排除内部类等)的任何帮助

解决方法:

当前的Roslyn CTP中有一个Roslyn.Services.MetadataAsSource命名空间,可用于将类型的公共接口转换为源代码.这就是我们实现F12“元数据作为源”功能的目的.现在,它仅生成实际上不会编译的源代码外壳,因此您必须使用其他API将语法树修改为所需的语法.或者,您可以使用Roslyn.Services.CodeGeneration命名空间从这些符号自动生成源.我应该警告MetadataAsSource命名空间在将来的API版本中可能会消失.

您可以通过以下方式从元数据中导入符号:使用您关心的元数据引用创建一个否则为空的编译,然后从该编译中浏览GlobalNamespace属性的类型层次结构,或调用Compilation.GetReferencedAssemblySymbol(),然后进行挖掘.这实际上比使用反射要好得多,因为它可以从“ C#透视图”而不是“ CLR透视图”正确表达符号模型-反射不会为您提供有关动态,某些默认参数值的使用信息,等等

标签:roslyn,c
来源: https://codeday.me/bug/20191030/1971688.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有