Je suis en train de développer un outil personnalisé pour Visual Studio. L'outil est assigné au fichier, au moment où le fichier a changé, je reçois le nom de ce fichier et devrait générer quelques changements dans le projet. J'ai besoin de trouver un ProjectItem par le nom de fichier reçu. Je n'ai trouvé qu'une seule solution: énumérer tous les éléments du projet dans chaque projet de la solution. Mais il semble être une solution énorme. Existe-t-il un moyen d'obtenir un élément de projet par le nom de fichier sans énumération?Comment trouver un ProjectItem par le nom de fichier
C'est ma mise en œuvre de la méthode Générer du IVsSingleFileGenerator
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;
}
Pas clair: Êtes-vous l'analyse du fichier sln, puis l'analyse de chaque csproj? Ou êtes-vous en train de scanner le système de fichiers? –
Je recherche dans l'objet DTE fourni par VisualStudio. –
Cela semble fonctionner: https://stackoverflow.com/a/38876595/509584 –