Y a-t-il un moyen pour Visual Studio de signaler une erreur / avertissement lorsque vous créez une solution qui a des fichiers manquants (icône triangle jaune avec l'exclamation) qui ont nécessairement une erreur de compilation? Comme un fichier de configuration manquant qui est lu pendant l'exécution. P>
merci p>
4 Réponses :
Vous devez définir un respect de l'environnement Macro . Voir la description générale sur la façon de faire ici: Personnalisez votre processus de construction de votre projet .
Et voici le code que vous pouvez passer directement dans l'environnement macro pour vérifier les fichiers manquants: p> Il affichera le texte "Fichier manquant" directement dans la version Visual Studio "Construire "Fenêtre de sortie. Il devrait être assez facile de comprendre et de régler vos besoins. Par exemple, vous pouvez ajouter des erreurs à la sortie d'erreur. P> p>
Visual Studio 2012/2013 ne prend plus en charge les macros, voir Stackoverflow.com/questions/20689829/... pour une solution mise à jour
Merci pour la VS 2012 et Up Redirect!
Lorsque nous avions des fichiers manquants, nous devions avoir des erreurs de compilation folle, comme incapable d'écrire xyz.pdb, même si le fichier a fini par être écrit. J'ai pris ce que Simon avait fourni (merci!) Et la retourna un peu; Spécifiquement, j'ai ajouté un peu de récursivité et ajout de la prise en charge des dossiers et des fichiers avec des sous-fichiers (par exemple les jeux de données, le code de code).
Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
For Each proj As Project In DTE.Solution.Projects
walkTree(proj.ProjectItems, False)
Next
End Sub
Private Sub walkTree(ByVal list As ProjectItems, ByVal showAll As Boolean)
For Each item As ProjectItem In list
' from http://msdn.microsoft.com/en-us/library/z4bcch80(v=vs.80).aspx
' physical files: {6BB5F8EE-4483-11D3-8BCF-00C04F8EC28C}
' physical folders: {6BB5F8EF-4483-11D3-8BCF-00C04F8EC28C}
If (item.Kind = "{6BB5F8EE-4483-11D3-8BCF-00C04F8EC28C}" OrElse _
item.Kind = "{6BB5F8EF-4483-11D3-8BCF-00C04F8EC28C}") Then
For i As Integer = 1 To item.FileCount ' appears to be 1 all the time...
Dim existsOrIsFolder As Boolean = (item.Kind = "{6BB5F8EF-4483-11D3-8BCF-00C04F8EC28C}" OrElse System.IO.File.Exists(item.FileNames(i)))
If (showAll OrElse _
existsOrIsFolder = False) Then
WriteToBuildWindow(String.Format("{0}, {1}, {2} ", existsOrIsFolder, item.ContainingProject.Name, item.FileNames(i)))
End If
Next
If (item.ProjectItems.Count > 0) Then
walkTree(item.ProjectItems, showAll)
End If
End If
Next
End Sub
Private Sub WriteToBuildWindow(ByVal text As String)
Dim ow As OutputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Object
Dim build As OutputWindowPane = ow.OutputWindowPanes.Item("Build")
build.OutputString(text & Environment.NewLine)
End Sub
Si vous avez un environnement de type Linux avec accès au dossier de projet (par exemple, si vous utilisez GIT pour le contrôle de la version, vous pouvez probablement utiliser le git bash inclus pour cela, ou si vous utilisez Cygwin), voici Ma manière vraiment rapide et sale: (Comment cela fonctionne: j'essaie de Notez que cela ne comprend pas les évasions codées par l'URL, vous obtiendrez donc quelques faux positifs si votre projet contient des noms de fichiers avec des personnages comme '(' en eux. < / p> p> ls code> chaque fichier nommé dans le projet et envoyez la sortie STDOUT du LS code> commande à / dev / null code>, il sera donc masqué. Si des fichiers n'existent pas, LS CODE> Barbe de leurs noms à STDERR plutôt que STDOUT , donc ceux-ci seront visibles.) p>
Bon sang, je dois apprendre SED un jour parce que cela fonctionnait comme un charme pour moi, merci beaucoup :)
Si quelqu'un d'autre trébuche sur ce fil, il y a un Plugin A> Cela vous donnera une erreur de construction lorsque vous avez des fichiers de votre projet. P>
Je voudrais aussi une réponse à cette question. Je trouve qu'il est en train de résoudre qu'un fichier peut être manquant et que la construction compile avec succès, ainsi que la compilation de la vue. Sûrement, à tout le moins, il devrait au moins d'être un paramètre de Visual Studio ou du projet que je peux fixer pour appliquer cela.