
1 using System;
2 using System.IO;
3 using System.Linq;
4 using System.Threading.Tasks;
5 using Microsoft.CodeAnalysis;
6 using Microsoft.CodeAnalysis.CSharp;
7 using Microsoft.CodeAnalysis.CSharp.Syntax;
8 using Microsoft.CodeAnalysis.MSBuild;
9
10 namespace Walterlv.Demo.Roslyn
11 {
12 class Program
13 {
14 static void Main(string[] args)
15 {
16 RunAsync().Wait();
17 }
18
19 private static async Task RunAsync()
20 {
21 var solution = await MSBuildWorkspace.Create().OpenSolutionAsync(
22 @"D:\Developments\Open\MSTestEnhancer\MSTest.Extensions.sln");
23 var project = solution.Projects.First(x => x.Name == "MSTest.Extensions");
24 var document = project.Documents.First(x =>
25 x.Name.Equals("ContractTestContext.cs", StringComparison.InvariantCultureIgnoreCase));
26
27 var tree = await document.GetSyntaxTreeAsync();
28 var syntax = tree.GetCompilationUnitRoot();
29
30 var visitor = new TypeParameterVisitor();
31 var node = visitor.Visit(syntax);
32
33 var text = node.GetText();
34 File.WriteAllText(document.FilePath, text.ToString());
35 }
36 }
37
38 class TypeParameterVisitor : CSharpSyntaxRewriter
39 {
40 public override SyntaxNode VisitTypeParameterList(TypeParameterListSyntax node)
41 {
42 var syntaxList = new SeparatedSyntaxList<TypeParameterSyntax>();
43 syntaxList = syntaxList.Add(SyntaxFactory.TypeParameter("TParameter"));
44
45 var lessThanToken = this.VisitToken(node.LessThanToken);
46 var greaterThanToken = this.VisitToken(node.GreaterThanToken);
47 return node.Update(lessThanToken, syntaxList, greaterThanToken);
48 }
49 }
50 }

但是运行出错:#
System.Reflection.ReflectionTypeLoadException:#
解决方案(亲测有效):#
只需要在NuGet中在安装上Microsoft.Build,Microsoft.Build.Utilities.Core,不用using导入,再次运行就不会报错。#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异