Visual Studio扩展性:将现有文件夹添加到项目

时间:2020-03-05 18:53:53  来源:igfitidea点击:

我试图使用Visual Studio 2008的可扩展性来编写一个插件,该插件将在解析接口后创建一个包含各种消息的项目文件夹。但是,在创建/添加文件夹的步骤中遇到了麻烦。我试过使用

ProjectItem folder = 
item.ProjectItem.Collection.AddFolder(newDirectoryName, string.Empty);

(项目是我的目标文件,在该文件旁边,我正在创建一个具有相同名称但添加"消息"的文件夹),但是当文件夹已经存在时它会阻塞(不足为奇)。

我尝试删除它(如果已存在),例如:

DirectoryInfo dirInfo = new DirectoryInfo(newDirectoryParent + 
newDirectoryName); 
if (dirInfo.Exists) 
{
    dirInfo.Delete(true);
}

ProjectItem folder = 
item.ProjectItem.Collection.AddFolder(newDirectoryName, string.Empty);

我可以看到在调试时该文件夹已被删除,但是它仍然
似乎认为该文件夹仍然存在并且已经在该文件夹上死亡
存在异常。

有任何想法吗???

谢谢。

阿克

....也许答案在于删除后以编程方式刷新项目?怎么做?

解决方案

回答

是的,就是...

DirectoryInfo dirInfo = new DirectoryInfo(newDirectoryParent + newDirectoryName);

if (dirInfo.Exists)
{
    dirInfo.Delete(true);
    item.DTE.ExecuteCommand("View.Refresh", string.Empty);
}

ProjectItem folder = item.ProjectItem.Collection.AddFolder(newDirectoryName, string.Empty);

如果有一种更优雅的方式来做到这一点,将不胜感激...

谢谢。

回答

这是我想到的一个主意,因为我已经使用NAnt很久了,并认为它可能会起作用。

在文本编辑器中打开.csproj文件,并按以下方式添加目录:

<ItemGroup>
   <compile include="\path\rootFolderToInclude\**\*.cs" />
</ItemGroup>

如果已经存在" ItemGroup",那就很好。只需将其添加到现有的。 Visual Studio不会真正知道如何编辑该条目,但是它将扫描整个目录。

编辑我们想要的任何内容。