2009-10-13 87 views
1

所以我有一个显示一个TFS的完整路径文件页面上地方网站的运行,我希望用户能够点击在它上面,然后它应该从TFS里面的Visual Studio中打开那个文件。使用全TFS路径从TFS打开文件,从网站

做这里面的Visual Studio的命令是“File.TfsOpenFromSourceControl”(DTE命令) - 它基本上是使用源代码控制管理,并双击打开它手动去该文件的用户。

我想从我的web应用程序模拟浏览器中的那个动作。

更新:Web应用程序是一个纯粹的ASPNet MVC应用程序,Jquery可以使用它。我已经在Web应用程序中向用户显示文件的内容。但是我希望用户在Visual Studio中打开相同的文件,方法是单击Web应用程序中的文件路径。问题更多的是浏览器到VS集成以及如何从浏览器的Web应用上下文中执行有问题的DTE命令。

任何线索将是有益的

+0

你的意思是你想显示该文件的内容在浏览器窗口内(即直接从TFS服务器)?或者你想要一个URL,当点击它时,会启动VS并使其打开文件? – 2009-10-13 23:09:42

+0

否。启动VS并打开文件,如果VS尚未打开。否则在现有的VS窗口中打开它 – Vin 2009-10-14 14:40:33

回答

0

我不知道答案帕维尔的问题,所以我就勾勒两种解决方案的轮廓。

  • 如果要在浏览器内显示文件,请拨打Item.DownloadFile() API。注意:在2008 SP1中,这种方法有另一种重载,允许流式传输到内存缓冲区,而不是直接写入文件系统。如果您尚未直接使用Item对象,则可以通过GetItem()/ GetItems()API检索它们。

  • 如果你想在VS中打开文件,有几种方法。也许你的web应用程序已经为用户包含了本地工作区的概念,类似于Source Control Explorer。如果是这样,你只需调用Workspace.GetLocalItemForServerItem()来找到该项目的本地路径,然后ShellExecute它。 (或者可以将它作为命令行参数传递给devenv.exe,如果它本身不与VS关联)。如果没有,则可以代表用户创建临时工作空间,或者使用之前显示的相同的DownloadFile()API ;通过Web服务将内容流式传输到客户端,保存到磁盘,然后像以前一样启动VS。

当然,选项#2下更多涉及的场景需要比DOM/Javascript可以提供的更深的操作系统集成。将有助于知道这个Web应用程序是否已经建立在ActiveX,Flash,Silverlight,XBAP,或类似的技术...

+0

感谢Richard的回应,该应用程序是一个纯粹的ASPNet MVC应用程序,可以使用Jquery。我已经在Web应用程序中向用户显示文件的内容。但是我希望用户在Visual Studio中打开相同的文件,方法是单击Web应用程序中的文件路径。问题是更多的浏览器VS集成,以及如何执行有问题的DTE命令 – Vin 2009-10-14 14:43:12

+0

因此,基本上你希望Javascript能够在我的计算机上执行任意代码?不用了,谢谢!我喜欢我的浏览器安全性,因为它有时是脆弱的。最好的办法是将文件内容作为可下载项目推送,指示用户单击“打开”,并希望他们具有与VS关联的文件扩展名。 – 2009-10-14 14:49:26

+0

了解安全问题,但这会发生在用户授予在VS打开文件的权限(“对话框可能会弹出”) - 不要认为它是一个互联网应用程序,我永远不会做这样的事情。这是我正在谈论的一个特定的应用程序。忘记浏览器,把它想象成一个winform应用程序内的BrowserControl。你知道我在说什么? :) – Vin 2009-10-14 17:30:08