C# .csproj文件-以编程方式添加/删除文件

C# .csproj文件-以编程方式添加/删除文件,c#,C#,我编写了一个C#代码生成器,用于在Ling-to-SQL应用程序中生成实体和相关类文件。代码生成器需要在TFS中添加/删除文件,还需要从.csproj文件中添加/删除文件,以便在各自的项目中正确包含或排除这些文件 我已经了解了TFS交互,但对以编程方式从.csproj文件中添加/删除文件的最佳或标准方式感到好奇。有人有这方面的经验吗 谢谢-Randy,都是XML。将其加载到DOM中并按自己的方式处理。.csproj文件只是XML,它们符合XSD。只需添加新的XML元素 要找到XSD,请看一看:我

我编写了一个C#代码生成器,用于在Ling-to-SQL应用程序中生成实体和相关类文件。代码生成器需要在TFS中添加/删除文件,还需要从.csproj文件中添加/删除文件,以便在各自的项目中正确包含或排除这些文件

我已经了解了TFS交互,但对以编程方式从.csproj文件中添加/删除文件的最佳或标准方式感到好奇。有人有这方面的经验吗


谢谢-Randy,都是XML。将其加载到DOM中并按自己的方式处理。

.csproj文件只是XML,它们符合XSD。只需添加新的XML元素


要找到XSD,请看一看:

我见过不修改项目的代码生成器。项目始终知道生成的文件,但不包括实际文件。

另一个选项是使用Visual Studio自动化模型。从VisualStudio内部,可以使用宏代码(VBA)修改项目。具有指向主要自动化库文档的链接


这样做,您可以创建一个非常灵活的集成。例如,您可以使用一个Visual Studio宏启动代码生成过程,然后将生成的文件添加到项目中。

您可以创建一个示例文件,然后引用它来编辑XML文件 案例“.aspx”: {

                if ((File.ReadAllText((GlobalVariables.sDestinationPath).Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention).Contains("<Content Include=\"" + fileName1 + "\" />")) == false)
                    {
                        fileReader = File.ReadAllText(GlobalVariables.sDestinationPath + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "").Replace("<Content Include=\"Web.config\" />", "<Content Include=\"Web.config\" />" + "\n" + "    <Content Include=\"" + fileName1 + "\" />");
                        File.WriteAllText(GlobalVariables.sDestinationPath.Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "", fileReader);

                        fileReader = File.ReadAllText(GlobalVariables.sDestinationPath.Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "").Replace("<Compile Include=\"" + pathfol + "\" />", "<Compile Include=\"" + pathfol + "\" />" + "\n" + "    <Compile Include=\"" + fileName1 + ".vb\" > " + "\n" + "     <DependentUpon>" + fileName1 + "</DependentUpon>" + "\n" + "     <SubType>ASPXCodeBehind</SubType>" + "\n" + "    </Compile>" + "\n" + "    <Compile Include=\"" + fileName1 + ".designer.vb\">" + "\n" + "     <DependentUpon>" + fileName1 + "</DependentUpon>" + "\n" + " </Compile> ");
                        File.WriteAllText(GlobalVariables.sDestinationPath.Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "", fileReader);
                    }
if((File.ReadAllText((GlobalVariables.sdestinitionPath).Trim()+“”+GlobalVariables.sprrojName+“\\”+GlobalVariables.sprrojName+projExtention).Contains(“”)=false)
{
fileReader=File.ReadAllText(GlobalVariables.sDestinationPath+“”+GlobalVariables.sprrojName+“\\”+GlobalVariables.sprrojName+projExtention+“”)。替换(“,”+“\n”+”);
File.writealText(GlobalVariables.sdestentiationpath.Trim()+“”+GlobalVariables.sprrojname+“\\”+GlobalVariables.sprrojname+projExtention+“”,fileReader);
fileReader=File.ReadAllText(GlobalVariables.sDestinationPath.Trim()++++GlobalVariables.sprrojName++“\\”+GlobalVariables.sprrojName+projExtention++)。替换(“,”,“+”,“+”\n”+“+”+“+”\n”+“+fileName1+”+“\n”+“\n”+“\n”+“+aspxcodebhing”+“+”\n”+”;
File.writealText(GlobalVariables.sdestentiationpath.Trim()+“”+GlobalVariables.sprrojname+“\\”+GlobalVariables.sprrojname+projExtention+“”,fileReader);
}

我宁愿不只是“按我的方式去做”。如果我弄错了,我会把整个项目搞砸。我一直在寻找示例代码来做到这一点。@RandyMinder如果你把所有代码都放在源代码管理中,你就不会把它搞砸:)!这对我来说毫无意义。一个项目怎么能“意识到”呢生成的文件的数量,但实际上没有包含在项目中?这有什么好处?这些文件仍然不是项目的一部分。这可能是最好的方法。我刚刚开始了解DTE对象。TFS交互是如何工作的?您有任何链接吗?