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

时间:2010-09-17 19:39:44

标签: tfs

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

workspace.PendAdd(filesWithPathToEdit, true);

2 个答案:

答案 0 :(得分:1)

我必须将它放在T4模板中才能访问当前的Visual Studio DTE,否则如果我在t4之外尝试它,它会随机工作。您可以使用DTE从解决方案中获取项目列表,然后添加ProjectItem,它包含ProjectItems,以便您可以在后面添加代码。 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);
                        }
                    }
                }

答案 1 :(得分:0)

无法自动知道文件是否依赖于其他文件。但是,您可以自己决定通常哪些文件具有与之关联的代码,并自行添加。

例如:

如果您开始添加扩展名为.aspx的文件,那么我们知道这些文件通常会有一个代码隐藏文件。我们可以假设,文件后面的代码具有相同的文件名,并附加.cs。所以,如果我们有“Default.aspx”,那么我们可以放心地假设会有一个“Default.aspx.cs”并且它们彼此依赖,所以我们应该同时添加它们。

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