我编写了一个C#代码生成器,用于在Ling-To-SQL应用程序中生成实体和相关的类文件。代码生成器需要在TFS中添加/删除文件,并在.csproj文件中添加/删除它们,以便在各自的项目中正确包含或排除它们。
我已经找到了TFS交互,但对于从.csproj文件以编程方式添加/删除文件的最佳或标准方式感到好奇。有人有这方面的经验吗?
谢谢 - 兰迪
答案 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);
}