我们知道,在用C#开发中,通过vs编辑器新建的脚本,会自动包含到vs工程中,而通过外部创建,比如复制别的工程或代码创建的C#脚本不会包含到vs工程。
在我们的日常开发中,通常会自动创建C#脚本,特别是用编辑器代码生成UI代码。
deepseek搜了几种方案,试了两种,都不能正确将代码包含到工程。下面记录一个可以正常使用的方案。
public static void AddFileToProject(string projectPath, string filePath)
{
filePath = filePath.Replace("/", "\\");
// 直接修改 .csproj 文件(需要 XML 操作)
XDocument doc = XDocument.Load(projectPath);
XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
// 查找或创建ItemGroup
var itemGroup = doc.Descendants(ns + "ItemGroup")
.FirstOrDefault(g => g.Elements(ns + "Compile").Any())
?? new XElement(ns + "ItemGroup");
// 添加文件项
itemGroup.Add(new XElement(ns + "Compile",
new XAttribute("Include", filePath)));
// 若ItemGroup是新建的,添加到Root
if (itemGroup.Parent == null)
doc.Root.Add(itemGroup);
doc.Save(projectPath);
}
1、projectPath:项目(.csproj)文件的绝对路径(D:\MyProject\frame-work\Project\Demo\Demo.csproj)

2、filePath: 代码的相对路径,不清楚的可以在VS工程中创建一个测试脚本,然后对比工程文件前后差异。(注意路径是反斜杠“\”)

好了,通过以上代码就可以自动将新建C#文件包含到工程里面了。








![[spring] spring 框架、IOC和AOP思想](https://i-blog.csdnimg.cn/direct/206b161627a7466e8fb0f288b549f2e7.png)


![[浏览器]缓存策略机制详解](https://i-blog.csdnimg.cn/direct/e7f339e8e5d94ae0929382d2304ad96e.png)






![[CSS3]rem移动适配](https://i-blog.csdnimg.cn/img_convert/ec792de657ca2fcb7d01d5a750caec68.png)
