2009-10-13 5 views
1

j'ai donc une course de site Web qui affiche chemin complet d'un TFS fichier sur la page quelque part, je veux que l'utilisateur soit en mesure de cliquer dessus, qui devrait alors ouvrir ce fichier à partir de TFS dans leur Visual Studio.Ouverture d'un fichier de TFS en utilisant le chemin complet TFS, à partir d'un site web

La commande de le faire à l'intérieur de Visual Studio est « File.TfsOpenFromSourceControl » (commande DTE) - il est essentiellement l'utilisateur va manuellement ce fichier en utilisant l'explorateur de contrôle de la source et un double-clic pour l'ouvrir.

Je souhaite simuler cette action à partir de mon application Web à l'intérieur du navigateur .

Mise à jour: L'application Web est une application ASPNet MVC pure avec Jquery disponible. Je montre déjà le contenu du fichier à l'utilisateur dans l'application Web. Mais je veux que l'utilisateur ouvre le même fichier dans Visual Studio, en cliquant sur le chemin du fichier dans l'application web. La question est plus de Browser to VS intégration et comment exécuter la commande DTE en question, à partir du contexte de l'application web du navigateur.

Tous les indices seraient utiles

+0

Voulez-vous dire que vous voulez afficher le contenu de ce fichier dans la fenêtre du navigateur (c'est-à-dire directement à partir de Serveur TFS)? Ou voulez-vous une URL qui, une fois cliquée, lancerait VS et le ferait ouvrir le dossier? –

+0

Non. Lancer VS et ouvrir le fichier, si VS n'est pas déjà ouvert. Sinon, ouvrez-le dans la fenêtre VS existante – Vin

Répondre

0

Je ne connais pas la réponse à la question de Pavel, donc je vais esquisser un aperçu des deux solutions. Si vous souhaitez afficher le fichier dans le navigateur, appelez le Item.DownloadFile() API. NB: en 2008 SP1 il y a une autre surcharge de cette méthode qui permet la diffusion dans un tampon mémoire au lieu d'écrire directement dans le système de fichiers. Si vous ne travaillez pas directement avec les objets Item, vous pouvez les récupérer via les API GetItem()/GetItems().

  • Si vous souhaitez ouvrir le fichier dans VS, il existe plusieurs approches. Peut-être que votre application Web inclut déjà le concept d'espace (s) de travail local pour l'utilisateur, similaire à Source Control Explorer. Si c'est le cas, appelez simplement Workspace.GetLocalItemForServerItem() pour trouver le chemin local de l'élément, puis ShellExécutez-le. (Ou peut-être le passer comme un paramètre de ligne de commande à devenv.exe, si ce n'est pas nativement associé à VS.) Sinon, vous pouvez créer un espace de travail temporaire au nom de l'utilisateur ou utiliser la même API DownloadFile() ; diffuser le contenu au client via un service Web, enregistrer sur le disque, puis lancer VS comme avant. Naturellement, les scénarios les plus complexes de l'option n ° 2 nécessiteront une intégration plus poussée du système d'exploitation que le DOM/Javascript peut offrir. Aiderait à savoir si cette application web est déjà construite sur ActiveX, Flash, Silverlight, XBAP, ou une technologie similaire ...

  • +0

    Merci pour la réponse Richard, l'application est une application ASPNet MVC pure avec Jquery à sa disposition. Je montre déjà le contenu du fichier à l'utilisateur dans l'application Web. Mais je veux que l'utilisateur ouvre le même fichier dans Visual Studio, en cliquant sur le chemin du fichier dans l'application web. La question est plus d'intégration de Browser à VS et comment exécuter la commande DTE en question – Vin

    +0

    Donc, fondamentalement, vous aimeriez que Javascript puisse exécuter du code arbitraire sur mon ordinateur? Non merci! J'aime la sécurité de mon navigateur, fragile comme c'est parfois le cas.Le mieux que vous pouvez faire est de pousser le contenu du fichier en tant qu'élément téléchargeable, demander à l'utilisateur de cliquer sur "Ouvrir", et espérer qu'ils ont l'extension de fichier associée à VS. –

    +0

    Comprendre le problème de sécurité, mais cela se produirait avec l'autorisation de l'utilisateur d'ouvrir le fichier dans VS ("Dialog may popup") - Ne pas penser à une application Internet où je ne ferais jamais une telle chose. C'est une application spécifique dont je parle. Oubliez le navigateur, considérez-le comme un BrowserControl dans une application winform. Vous savez ce que je dis? :) – Vin

    Questions connexes