2008-09-25 5 views
2

J'ai utilisé la macro de this blog entry pour attacher le débogueur Visual Studio à une instance en cours d'exécution de l'application Web sur laquelle je travaille actuellement. Cependant, si j'ai plus d'une instance du serveur Web Visual Studio en cours d'exécution, il y a chance à laquelle il s'attachera.Détermination du port sur lequel une application Web Visual Studio s'exécute

Y at-il un moyen de déterminer quel port est configuré dans le projet Web afin que je puisse modifier la macro pour filtrer son choix de processus à celui-là?


Infos complémentaires

Je suis conscient que vous pouvez définir le numéro de port à une statique - je l'ai fait juste que dès le départ aller, ce que je suis en train de déterminer comment à par programme déterminer le numéro de port défini afin que je puisse modifier la macro (dans l'entrée de blog liée) et assurez-vous qu'il se connecte à la bonne instance du serveur Web Visual Studio. Le fonctionnement des choses est que j'ai deux (ou plus) instances de Visual Studio en cours d'exécution, chacune contenant une solution contenant un projet web et un ou plusieurs autres projets Lorsque je déclenche la macro à partir d'une instance donnée de Visual Studio, je souhaite trouver le projet Web dans cette instance chargée de la solution et déterminer le port sur lequel elle s'exécute.

+0

Je pense que je manque quelque chose évidente - Je ne comprends toujours pas la question. Par exemple, travaillez-vous dans deux applications Web + en même temps et lorsque vous essayez de déboguer un, il s'attache à une autre instance de Cassini au lieu de la sienne? Ou vous attachant d'un autre projet? –

+0

J'ai plusieurs instances de Visual Studio chargées, j'ai ajouté des précisions à la question: =) – Rob

Répondre

0

Si cela peut vous aider, je l'ai trouvé un lien qui pourrait en fait à l'affaire. Cependant, il nécessite un appel DllImport et beaucoup de plaisir.

Vous pouvez jeter un oeil à cet article là: http://bytes.com/forum/thread574901.html

Citations du site actuel:

En appelant à l'aide iphlpapi.dll PInvoke Interop. Google autour de GetExtendedTcpTable et iphlpapi.dll, Je suis sûr que vous trouverez des choses existantes .

Willy.

Et une dernière:

Voici quelques API méthodes pour mes fins:

GetTcpTable()
AllocateAndGetTcpExTableFromStack()
GetExtendedTcpTable()

J'ai écrit un petit programme qui est capable de me montrer tous les processus avec le appartenant aux ports TCP (avec AllocateAndGetTcpExTableFromStack()) fonctionnant sous Windows XP.

Maintenant, mon problème est, que sous Windows 2000 Je ne peux pas utiliser AllocateAndGetTcpExTableFromStack() ou GetExtendedTcpTable() donc je suis seulement capable d'utiliser GetTcpTable() pour répertorier tous les TCP Ports mais sans appartenant processus.

Quelqu'un a-t-il eu le même problème ou y at-il un autre moyen (.Net ou WMI etc.) pour résoudre mon problème?

Merci à l'avance,

Werner

-1

Si vous accédez aux propriétés de votre projet Web et que vous consultez l'onglet "Web", vous pouvez spécifier le port sur lequel le projet démarrera toujours. Ensuite, vous pouvez cliquer sur "Activer Editer et continuer" afin que vous n'ayez pas à arrêter le débogage et redémarrer continuellement.

2

Ce code vous obtiendrez une liste de tous les ports pour les projets dans la solution actuelle:

Sub GetWebProjectPorts() 
    Dim ports As String 

    For Each prj As Project In DTE.Solution.Projects 
     For Each p As EnvDTE.Property In prj.Properties 
      If p.Name.Contains("DevelopmentServerPort") Then 
       If Not String.IsNullOrEmpty(ports) Then 
        ports += "," 
       End If 
       ports += p.Value.ToString() 
      End If 
     Next 
    Next 

    MsgBox(ports) 
End Sub 
Questions connexes