11

Fondamentalement, je veux un de mes dossiers à apparaître au-dessus des autres dossiers comme un type de « dossier spécial », semblable à la façon dont des propriétés a son propre endroit spécial, même si elle est un dossier, même avec App_Data, etc.Visual Studio Solution - Une façon de créer un dossier "spécial"?

Est-ce possible?

+0

Je crée généralement un dossier de solution. – AMissico

+0

Vous voulez cela au niveau de la solution ou du projet? – Jon

+0

Les dossiers de solution sont triés par ordre alphabétique. –

Répondre

4

Par défaut, Visual Studio ne prend pas en charge l'ajout de dossiers de projet spéciaux. Le dossier Propriétés est codé en dur pour se comporter comme il le fait.

Cependant, tout est possible avec du code. Vous pourriez construire une extension pour le faire, mais ce ne serait pas simple. Vous auriez probablement besoin de déranger avec le IVsHierarchy ou même mettre en œuvre un project subtype.

3

Fondamentalement, je veux un de mes dossiers à apparaissent au-dessus des autres dossiers comme un type de « dossier spécial », semblable à comment les propriétés possèdent leur propre endroit spécial, même si elle est un dossier, même avec App_Data, etc.

Est-ce possible?

Oui:

  1. le faire manuellement par l'IDE
  2. Rédigez votre propre script pour générer/modifier votre *.sln/*.vcproj

Pour (1) "manuel" sur solutions dans l'ESI: Solution Explorer, right-click sur Solution node ==>Add ==>New Solution Folder. En général, les dossiers sont triés par ordre alphabétique (j'insère un trait de soulignement pour forcer votre dossier spécial vers le haut), mais les dossiers de solution insérés manuellement sur mon MSVS2008 laissent le nouveau dossier "en haut", même s'il doit ont chuté quand trié par ordre alphabétique. Cependant, les dossiers sous Project (qui sont appelés "Filters") sont toujours triés par ordre alphabétique, et ajoutés de la même manière à partir du clic droit, puis vous pouvez modifier leurs "propriétés de filtre" avec les globs de nom de fichier pour ce que vous voulez. , ajoutez un glob de filtre pour "*.MY_EXTENSION1;*.MY_EXTENSION2").

Nous avons choisi (2), et nous générons nos propres *.sln et *.vcproj, en ajoutant nos propres dossiers/filtres. Je n'ai vu aucun utilitaire sur le web pour vous aider (nous avons donc dû écrire le sien). Les formats ne sont pas trop difficiles à désosser, mais c'est en grande partie du XML non documenté, donc vous devez expérimenter. Il n'y a que quelques bons articles web expliquant ce qui est dans le fichier, comme celui-ci:

http://tim.oreilly.com/pub/a/dotnet/excerpt/vshacks_chap1/index.html?page=4

Sur le « bon côté », les fichiers ne sont que XML, donc dans le développement de nos scripts nous simplement apporté des changements par l'EDI, enregistré, et comparé les "diffs" pour ce que nous voulons changer. Ces changements sont ce que nos scripts insèrent lorsque nous modifions nos fichiers. Donc, si vous modifiez le fichier manuellement, vous pouvez de même simplement "diff" le fichier pour voir ce qui a changé, et faire votre propre script. (À mon humble avis, c'est le chemin le plus rapide et le plus facile, car les outils n'existent généralement pas pour manipuler ces fichiers.)

Des outils tels que CMake et QMake génèrent *.vcproj/*.sln, mais ne pas vraiment faire la chose la personnalisation des dossiers comme vous parlez. Cependant, nous regardons aussi leur sortie, car «il y a plus d'une façon de faire les choses» dans ces fichiers, et les fichiers semblent avoir de nombreuses fonctionnalités non documentées pour faire des choses différentes que ces outils ont «découvert» peut essayer de copier leur sortie générée).

Nous avons trouvé que les API .NET fonctionnaient avec ces fichiers comme trop de travail, et pas vraiment conçus pour ce type de manipulation, mais YMMV.

+0

>> en grande partie non documenté XML, donc vous devez expérimenter << Les fichiers de projet et de solution pour Visual Studio 2005+ sont des fichiers MSBuild. Il n'y a rien à pirater. – AMissico

+0

>> les fichiers semblent avoir de nombreuses fonctionnalités non documentées pour faire différentes choses intelligentes que ces outils ont «découvertes» << Ces fonctionnalités non documentées sont des fonctionnalités de MSBuild. – AMissico

+0

Cela ne fonctionnera pas sur VS2010. VS2008 a un bug qui fait que les projets sont dans l'ordre dans lequel ils se trouvent dans le fichier de projet. J'ai écrit un petit outil pour moi-même et mon équipe s'accouple il y a quelques temps pour trier les projets par ordre alphabétique dans le fichier .sln pour résoudre ce problème. VS2010 corrige ce comportement, donc si vous cherchez des noms, vous devrez utiliser des astuces de soulignement ou similaires. – sprite

1

Bien qu'il n'y ait pas de moyen facile d'ajouter Custom Folder, il existe un moyen facile de "voler" Properties dossier personnalisé.

  1. Ajoutez un dossier ordinaire au projet. Par exemple MyCustomerFolder.
  2. Ouvrir le fichier proj. Trouver la ligne

    <AppDesignerFolder>Properties</AppDesignerFolder> 
    

    remplacer par

    <AppDesignerFolder>MyCustomFolder</AppDesignerFolder> 
    
  3. Recharger le projet.
  4. Maintenant, vous avez un dossier personnalisé, qui restera toujours en haut.

    enter image description here

+0

Ceci est une bonne astuce, mais cela ne fonctionne pas si vous voulez ajouter plus d'un dossier spécial. – Matt

+1

@Matt - vrai. Cependant, la question indique clairement "Je veux qu'un de mes dossiers apparaisse au-dessus des autres dossiers". –

+0

Oui, vous avez raison. Bien que ce soit aussi un problème s'il a réellement besoin d'utiliser le dossier App Designer et veut le garder indépendant de son "dossier spécial". – Matt

2

VS 2012 a une caractéristique que je viens de trouver, et il a résolu ce problème pour moi. Ce n'est peut-être pas nouveau pour VS.

Créez un dossier sous le projet avec un "_" en tête (pour le trier en premier).

Dans les propriétés du dossier, définissez «Namespace Provider» sur false.

L'analyse de code VS (ou ReSharper?) Ne se plaint pas alors que «l'espace de noms ne correspond pas à l'emplacement du fichier», ce qui m'aurait causé une irritation qui m'aurait empêché d'emprunter cette voie.

Questions connexes