gpt4 book ai didi

c# - ProjectItems.AddFromDirectory 不适用于 VS2015

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:58 26 4
gpt4 key购买 nike

我需要以编程方式将目录复制到我的项目中。我在我的项目中使用了以下代码:

ProjectItems.AddFromDirectory(_projectPath + "\\Folder");

但它不会复制整个目录。它只是将根文件夹添加到项目中。我独自面对 VS2015。

有什么解决办法吗?

最佳答案

这可能不是最优雅的解决方案。但它正在按要求使用 AddFromDirectory。我使用 Visual Studio 2015 Professional 对此进行了测试。

public static void RefreshItemsInProject(Project project, string projectPath)
{
foreach(string subDirectoryPath in Directory.EnumerateDirectories(projectPath))
AddItemsToProjectFromDirectory(project.ProjectItems, subDirectoryPath));
}

private static readonly HashSet<string> _excluded = new HashSet<string>() { "bin", "obj" };

public static void AddItemsToProjectFromDirectory(ProjectItems projectItems, string directoryPath)
{
//very weird GetDirectoryName returns the FULL PATH!!!!
//When using GetFileName on a Directory it actually returns the FolderName WITHOUT the PATH.
var directoryName = Path.GetFileName(directoryPath);

if(_excluded.Contains(directoryName.ToLower()))//folder to exclude like bin and obj.
return;//return right away if the folder has been excluded.

var subFolder = projectItems.AddFromDirectory(directoryPath);

foreach(string subDirectoryPath in Directory.EnumerateDirectories(directoryPath))
AddItemsToProjectFromDirectory(subFolder.ProjectItems, subDirectoryPath);
}

要像这样调用此代码:

RefreshItemsInProject(myProject, projectPath);

myProject 是 EnvDTE.Project 类型

每当有变化时,您都可以在项目上调用它;例如添加了一个新文件;它将刷新项目的内容。

请注意,它支持“排除的”目录列表,以避免在您的项目中包含 bin 和 obj 等内容。

希望对大家有所帮助。

更新:我意识到这只适用于二级目录。像这样:

MyDir--->MySecondDir--->MyItems 这有效! 二级项目。

MyDir--->MyItems 这不起作用! 第一级的项目。

由于某种原因,它无法在一级目录中添加项目。似乎是 Microsoft 实现中的错误。如果有人可以阐明这个问题;我真的很感激。

关于c# - ProjectItems.AddFromDirectory 不适用于 VS2015,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31873609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com