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

时间:2010-01-05 20:58:26

标签: c#

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

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

谢谢 - 兰迪

5 个答案:

答案 0 :(得分:5)

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

要查找XSD,请查看:Where can I find the schema (XSD) for a .csproj file?

答案 1 :(得分:1)

这都是XML。将它加载到DOM中,然后按照自己的方式使用它。

答案 2 :(得分:1)

另一种选择是使用Visual Studio自动化模型。从Visual Studio内部,您可以使用宏代码(VBA)修改项目。 This page on MSDN包含指向主要自动化库文档的链接。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您创建了一个示例文件&然后引用它你可以编辑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);
                    }