我正在为 Visual Studio 开发一个自定义工具。该工具已分配给文件,在文件更改时,我收到此文件的名称,并且应该在项目中生成一些更改。我需要通过收到的文件名找到一个 ProjectItem。我发现只有一个解决方案它枚举了解决方案的每个项目中的所有项目项。但这似乎是一个巨大的解决方案。有没有办法通过文件名获取项目项而不枚举?
这是我对 IVsSingleFileGenerator 的 Generate 方法的实现
public int Generate(string sourceFilePath, string sourceFileContent, string defaultNamespace, IntPtr[] outputFileContents, out uint output, IVsGeneratorProgress generateProgress)
{
var dte = (EnvDTE.DTE)Package.GetGlobalService(typeof(EnvDTE.DTE));
ProjectItem projectItem = null;
foreach (Project project in dte.Solution.Projects)
{
foreach (ProjectItem item in project.ProjectItems)
{
var path = item.Properties.Item("FullPath").Value;
if (sourceFilePath.Equals(path, StringComparison.OrdinalIgnoreCase))
{
projectItem = item;
}
}
}
output = 0;
outputFileContents[0] = IntPtr.Zero;
return Microsoft.VisualStudio.VSConstants.S_OK;
}