【Unity3D】将自动生成的脚本包含到C#工程文件中
我们知道,在用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";// 查找或创建ItemGroupvar 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是新建的,添加到Rootif (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#文件包含到工程里面了。