Association automatique au processus Visual Studio 2010

J’utilise Visual Studio 2010, mon application a un architecte multi-couches,

MainUI, WCFService, BLL et DAL

Mon MainUI communique avec WCF et WCF communique également avec BLL et DAL, chaque fois que je dois déboguer BLL et DAL, je dois d’abord associer WCF en tant que processus dans Visual studio (à chaque fois). Comment pourrais-je me sauver de ce problème.

Comment pourrais-je configurer Visual Studio de manière à ce que je me connecte automatiquement au service et que je puisse facilement déboguer mon application?

Merci

Configurez votre solution pour le démarrage de plusieurs projets. Je fais cela pour une application similaire. VS lance automatiquement le WCF et le client et je peux définir des points d’arrêt dans l’un ou l’autre.

L’ordre de démarrage correspond à l’ordre dans lequel vous sélectionnez les projets.

Cliquez avec le bouton droit de la souris sur votre solution et sélectionnez “Choisir les projets de démarrage”. Ensuite, sélectionnez plusieurs projets de démarrage et sélectionnez les projets.

Découvrez comment démarrer un processus et le joindre à Visual Studio 2010 avec EnvDTE (la version est pertinente).

 //c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\EnvDTE.dll using Process = EnvDTE.Process; System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = System.AppDomain.CurrentDomain.BaseDirectory + @"\YourProcess.exe"; //Start the process p.Start(); //Wait for process init System.Threading.Thread.Sleep(1000); bool attached = false; //did not find a better solution for this(since it's not super reliable) for (int i = 0; i < 5; i++) { if (attached) { break; } try { EnvDTE.DTE dte2 = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0"); EnvDTE.Debugger debugger = dte2.Debugger; foreach (Process program in debugger.LocalProcesses) { if (program.Name.Contains("YouProcess.exe")) { program.Attach(); attached = true; } } } catch (Exception ex) { //handle execption... } } 

Essayez d’utiliser System.Diagnostics.Debugger.Break () dans le code. Si un débogueur n’est pas attaché, alors l’exécution de ce code vous demandera d’attacher un débogueur et vous pourrez choisir l’instance existante.

Avez-vous essayé System.Diagnostics.Debugger.Launch() dans votre service auquel vous souhaitez que le débogueur s’attache?
http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.launch.aspx

  1. Dans la page de propriétés du projet de service wcf, sélectionnez l’onglet Web.
  2. Sélectionnez ‘Démarrer le programme externe’ pour l’action de démarrage, puis choisissez MainUI.exe.
  3. Définissez le répertoire de travail comme dossier dans lequel MainUI.exe se trouve (probablement un dossier bin).
  4. Définissez un point d’arrêt et appuyez sur f5 pour lancer le débogage.

Si je comprends bien, Macro peut être la réponse:

en Vs:

  1. Outils-> Macros-> Enregistrer TemporarilyMacro (Ctrl + Maj + r)
  2. Joindre le VS au processus habituel (ctrl + alt + p)
  3. Arrêter l’enregistrement de la macro (ctrl + shift + r)
  4. Allez dans Affichage-> Autre Windows-> Explorateur de macros (CTRL + F8)
  5. trouvez votre macro temporairement (quelque part dans MyMacros-> RecordingModule) et renommez-la
  6. Maintenant, allez dans Outils-> Options-> Clavier et trouvez votre macro (dans “Afficher la commande contenant le nom d’écriture de votre macro)
  7. dans “Appuyez sur les touches de raccourci”, associez-le à un raccourci clavier (j’ai ma macro en CTRL + SHIFT + K;))
  8. Poussez OK
  9. Soyez heureux

Avez-vous essayé d’utiliser le WCFSvcHost.EXE fourni avec Visual Studio pour lancer les services BLL et DAL? Il y a un fichier d’aide avec. Le fichier d’aide le dit mieux: “Hôte du service Windows Communication Foundation (WCF) (wcfSvcHost.exe) vous permet de lancer le débogueur Visual Studio (F5) pour héberger et tester automatiquement un service que vous avez implémenté. Vous pouvez ensuite tester le service à l’aide de Client de test WCF (wcfTestClient.exe), ou votre propre client, pour rechercher et corriger les erreurs potentielles. ” L’installation par défaut est C: \ Programmes \ Microsoft Visual Studio 10.0 \ Common7 \ IDE. Vous pouvez le configurer pour utiliser votre application MainUI en tant que client. Le fichier d’aide WcfSvcHost.chm situé dans le même répertoire contient une section permettant d’utiliser un client personnalisé sous Scénarios d’utilisation de l’hôte de service ECF. Si vous préférez, voici le lien pour vous aider sur le site Web de MS: Utilisation de l’hôte du service WCF (wcfSvcHost.exe) .

S’il s’agit d’un service Windows WCF auto-hébergé, vous devez rendre l’hôte de votre service WCF configurable pour s’exécuter dans la console ou en tant que service Windows. Une fois la console activée, vous pouvez lancer le débogage à partir de Visual Studio.

Créez un paramètre d’application appelé “RunInConsole”. Dans votre méthode de démarrage de l’hôte de service, disposez du code suivant:

 public class MyWindowsService : ServiceBase { public static void Main(ssortingng[] args) { // if configuration says to run in the console, run the service in a console app. otherwise, use windows // service to host application if (ConfigurationManager.AppSettings["RunInConsole"] == "true") { using (ServiceHost host = new ServiceHost(typeof(MyService))) { host.Open(); Console.WriteLine("Press  to terminate the Host application."); Console.ReadLine(); } } else ServiceBase.Run(new MyWindowsService ()); } } 

Sur tous les environnements dans lesquels vous déployez, ce paramètre de configuration a toujours la valeur false, sinon le service ne pourra pas démarrer, mais lors du débogage local, vous devrez le définir sur true.

Voici un article retenu qui explique comment faire cela … Vous pouvez personnaliser cette macro.

http://sivablogz.wordpress.com/2013/04/08/running-an-application-and-attaching-to-the-process-with-a-macro-in-visual-studio/

Personnellement, je préfère utiliser Debugger.Launch () comme suggéré ici dans ce fil , car il n’a pas besoin de références à l’ETTD (il est spécifique à l’EDI et doit être explicitement référencé dans le projet).