使用依赖项文件以编程方式将文件添加到TFS

使用依赖项文件以编程方式将文件添加到TFS,tfs,Tfs,如何以编程方式将具有代码隐藏文件的文件添加到TFS项目中。我可以说下面添加文件。这将只向项目中添加单个文件,而不是文件加上代码隐藏文件。我试图添加一个资源文件,它的代码是动态生成到TFS项目中的 workspace.PendAdd(filesWithPathToEdit, true); 它无法自动知道一个文件是否依赖于另一个文件。但是,您可以自行决定哪些文件通常会有一个与之关联的代码隐藏文件,然后自己添加这些文件 例如: 如果您开始添加扩展名为.aspx的文件,那么我们知道,这些文件通常都有一

如何以编程方式将具有代码隐藏文件的文件添加到TFS项目中。我可以说下面添加文件。这将只向项目中添加单个文件,而不是文件加上代码隐藏文件。我试图添加一个资源文件,它的代码是动态生成到TFS项目中的

workspace.PendAdd(filesWithPathToEdit, true);
它无法自动知道一个文件是否依赖于另一个文件。但是,您可以自行决定哪些文件通常会有一个与之关联的代码隐藏文件,然后自己添加这些文件

例如:

如果您开始添加扩展名为.aspx的文件,那么我们知道,这些文件通常都有一个代码隐藏文件。我们可以假设,该代码隐藏文件具有相同的文件名,并附加了.cs。因此,如果我们有“Default.aspx”,那么我们可以安全地假设将有一个“Default.aspx.cs”,并且它们相互依赖,因此我们应该将两者都添加


.xaml和.xaml.cs文件也是如此。

我必须将其放在T4模板中才能访问当前的Visual Studio DTE,否则如果我在T4之外尝试它,它将随机工作。您可以使用DTE从解决方案中获取项目列表,然后添加一个ProjectItem,其中包含ProjectItem,这样您就可以在其中添加代码。ResxContainer是一个自定义类,它只包含有关我所需的resx文件的所有信息

EnvDTE.DTE dte = (EnvDTE.DTE)HostServiceProvider.GetService(typeof(EnvDTE.DTE));
            //dte = (EnvDTE.DTE) hostServiceProvider.GetService(typeof(EnvDTE.DTE));
            //dte = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE");
            Projects projects = dte.Solution.Projects;
            if (projects.Count > 0)
            {
                IEnumerator enumer = ((IEnumerable)projects).GetEnumerator();
                while (enumer.MoveNext())
                {
                    Project proj = (Project)enumer.Current;
                    if (proj.Name == projectName)
                    {
                        foreach (ResxContainer res in items)
                        {
                            ProjectItem item = proj.ProjectItems.AddFromFile(res.ResxPath);
                            item.ProjectItems.AddFromFile(res.CodeBehindPath);
                        }
                    }
                }

因此,添加另一个文件。有什么问题吗?我正在尝试以编程方式添加它。如果使用Workspace.PendAdd添加这两个文件,则它们之间没有依赖关系。我认为有一种方法可以使用EnvDTE assembly来完成,并获取项目文件。我也想添加文件并对其进行修改。