Spiga

为VS.NET 2005增加Atlas Scripts的代码提示功能

2006-09-25 17:28 by Jeffrey Zhao, 3088 visits, 网摘, 编辑

  一直在不遗余力地向周围地人传播Atlas的Declarative Syntax,却总是得到“太难编写”的回答。最近有一次无论如何也找不出一个问题,最终发现是一个拼写错误,愤愤之余,无奈之下,只得设法为VS增加为Atlas的代码提示功能。苦于缺乏相关资料,MSDN上尽是如何为VS.NET 2003下Web Control增加客户端提示的文章。不过幸运地是,这些文章也给了我提示和方向。摸索数小时之后总算有所门道,奋战略有小成,不敢独享。虽然期间也曾遇到过一些头疼事,例如VS.NET编辑器无法区分HTML的<select />和Atlas Scripts里的<select />,幸运的是最终找到了解决办法。

  先来看一下效果吧:













  可以看出,这个代码提示其实就是和VS.NET对于HTML代码提示完全相同,因此可以非常快速地使用Declarative Syntax进行开发,也不会有拼写错误构成的无奈问题。由于制作代码提示需要一份完整的参考,而Atlas Client Library中的资料又不全,因此目前只支持只有Library里完整描述的所有Tag。一些比如listView,dataSource, webRequestManager,validator等tag我会在归纳完全后补全代码提示的功能。如果有哪位朋友已经完整归纳出这些,能否借给我参考一下,谢谢。:)

  添加这些Atlas Scripts的Intelligence支持的步骤如下:

1、点击这里下载所需的XSD文件,VS.NET 2005需要通过识别这个文件来提供所需的代码提示。

2、将压缩包内的Atlas_IE6_0.XSD复制到“%VS8_DIR%\Common7\Packages\schemas\html”目录中。(比如在我的机器上就是:“D:\Program Files\Microsoft Visual Studio 8\Common7\Packages\schemas\html”目录)

3、打开注册表编辑器(开始——运行——regedit),找到目录“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{1B437D20-F8FE-11D2-A6AE-00104BCC7269}\Schemas”,可以发现“Schema 1”,“Schema 2”……如图:


4、紧跟着Schema N的最大值再建一个目录(似乎VS.NET在这里只是检查连续的编号),如上图中“Schema 21”。

5、在刚建立的目录中添加三个字符串类型的值:
File:html\Atlas_IE6_0.XSD
Friendly Name:Atlas - Internet Explorer 6
URIhttp://schemas.microsoft.com/intellisense/atlas_ie6
如图:


6、打开VS.NET 2005,点击菜单:Tools——Options。

7、展开树状菜单:Text Editor——HTML——Validation,在右侧上方Target下拉框内选择“Atlas - Internet Explorer 6”,这就代表了选择我们刚才的XSD文件。如图:


8、展开树状菜单:Text Editor——HTML——Format,在右侧将“Client tag”和“Client attributes”均设为“As entered”。这样Editor就会保留输入时的原有大小写形式,否则将会变成全部大写或者全部小写。如图:



  现在,打开一个aspx文件,在<body />或<form />里输入<atlasscript type="text/xml-script" />,然后就能尽情享受Intelligence带来的便利了。不过,需要注意在真正运行前,需要把<atlasscript />改成<script />。由于Editor对于<script />的内容会不认做标签,但是如果撤销<script />的这一特性,在输入小于号“<”以后会出现本不该有的代码提示功能,非常讨厌,所以只能出此下策。但是个人觉得,与能够获得Intelligence功能相比,这点不方便还是能够忍受的吧。

  另外,如果在使用中发现了什么问题,也请马上告诉我,我会对Schema进行修改,谢谢。

  最后再提一下,现在我提供的Schema还不够完整,因为缺少了一些tag的详细资料,我正在归纳,也会及时更新。如果有哪位朋友能够提供的话,在下不胜感激。另外,目前我是扩展了Internet Explorer 6的Validation Schema,如果完整了所有的tag信息,我也会制作扩展HTML 4.01等其他Validation的Schema。



Schema同步更新,相关更新文章:
1、补充部分官方文档里没有的Client Library以及代码提示Schema更新(一)
2、补充部分官方文档里没有的Client Library以及代码提示Schema更新(二)
3、补充部分官方文档里没有的Client Library以及代码提示Schema更新(三)

VS 2005中文版用户请留意:
VS 2005中文版用户请谨慎使用我提供的Atlas Xml Scripts Intellisense方法


 

Add your comment

62 条回复

  1. #1楼 TerryLee      2006-09-25 17:35
    Cool!
    非常有价值的文章!一直都为没有自动提示头疼:-)
      回复  引用  查看    
  2. #2楼[楼主] Jeffrey Zhao      2006-09-25 17:40
    @TerryLee
    谢谢。:)
    你有没有整理过一些像listView,dataSource之类的属性啊?否则我只有再去读Atlas的代码了……
      回复  引用  查看    
  3. #3楼 含笑[匿名]2006-09-25 17:49
    真是及“时雨呀”!
      回复  引用    
  4. #4楼 珍宝猪      2006-09-25 17:53
    不能方便地导入schema...vs的不便之一啊...
      回复  引用  查看    
  5. #5楼[楼主] Jeffrey Zhao      2006-09-25 18:07
    @含笑[匿名]
    谢谢支持。:)
      回复  引用  查看    
  6. #6楼[楼主] Jeffrey Zhao      2006-09-25 18:09
    @珍宝猪
    而且实在缺少资料……
    至于倒入Schema的步骤,不知道真的比较麻烦,还是只是我不知道该如何方便的导入……
      回复  引用  查看    
  7. #7楼 Dflying Chen      2006-09-25 18:35
    good,耐心活,需要时间才做得出来……客户端控件的属性什么的可以参考我的文章,基本都有介绍。
      回复  引用  查看    
  8. #8楼 TerryLee      2006-09-25 18:59
    @Jeffrey Zhao
    呵呵,我没有来得及整理这些
    最近太忙了,顾不上了:-)
      回复  引用  查看    
  9. #9楼 维生素C.NET      2006-09-25 19:30
    顶一下LZ的辛苦的工作
      回复  引用  查看    
  10. #10楼[楼主] Jeffrey Zhao      2006-09-25 19:56
    @Dflying Chen
    OK,到时候去就去找你的文章抄,谢谢!
    其实麻烦的是去了解VS的行为,没有资料只能自己摸索,知道了以后耐着性子写一下午也就完成了,XML Schema中有许多复用的手段,很适合定义和描述这种有“继承”的关系。:)
      回复  引用  查看    
  11. #11楼[楼主] Jeffrey Zhao      2006-09-25 19:59
    @维生素C.NET
    多谢支持。:)
      回复  引用  查看    
  12. #12楼 buliangdedeng      2006-09-26 08:25
    谢谢了
      回复  引用  查看    
  13. #13楼 buliangdedeng      2006-09-26 08:58
    @Jeffrey Zhao
    有个问题要问 为什么我按你上面的步骤完成之后,得到提示下拉列表中还有服务端标签的提示,和atlas的服务端标签的提示
      回复  引用  查看    
  14. #14楼 lirenzhao[匿名][未注册用户]2006-09-26 09:20
    强烈推荐Flex
      回复  引用    
  15. #15楼 Aaron Zhou      2006-09-26 10:51
    不错不错,用起来方便很多
      回复  引用  查看    
  16. #16楼[楼主] Jeffrey Zhao      2006-09-26 11:48
    @buliangdedeng
    这没有办法,因为服务器端能够在任何客户端Tag之间使用来Render出任何东西,所以Editor就如此设定了。再加上服务器控件都是a开头所以都排在前面的确有点麻烦……
      回复  引用  查看    
  17. #17楼[楼主] Jeffrey Zhao      2006-09-26 11:52
    @lirenzhao[匿名]
    Flex的确不错,但是还需要很长一段路要走……
      回复  引用  查看    
  18. #18楼[楼主] Jeffrey Zhao      2006-09-26 11:53
    @buliangdedeng
    @Aaron Zhou
    多谢支持。:)
      回复  引用  查看    
  19. #19楼 拒绝潜水的鱼      2006-09-26 13:02
    辛苦了 谢谢
      回复  引用  查看    
  20. #20楼[楼主] Jeffrey Zhao      2006-09-26 13:44
    @拒绝潜水的鱼
    不客气,多谢支持。:)
      回复  引用  查看    
  21. #21楼 Leo_Ding[未注册用户]2006-09-26 14:17
    牛仁,请问如果我为自定义的控件也可以做schema吗?
      回复  引用    
  22. #22楼[楼主] Jeffrey Zhao      2006-09-26 15:21
    @Leo_Ding
    你是指自定义的behavior或者control之类的吗?
    当然可以,VS其实不了解你的tag行为,它只是一味地按照你提供的schema来进行提示和检测,因此您也可以添加自己的tag。
      回复  引用  查看    
  23. #23楼 buliangdedeng      2006-09-27 07:54
    @Jeffrey Zhao
    谢了 呵呵
      回复  引用  查看    
  24. #24楼[楼主] Jeffrey Zhao      2006-09-27 09:52
    @buliangdedeng
    :)
      回复  引用  查看    
  25. #25楼 老夫子系      2006-09-27 11:43
    辛苦了,Jeffrey Zhao兄!
      回复  引用  查看    
  26. #26楼 Beginor      2006-09-27 12:12
    太麻烦了吧,还有一个更加方便的,看一下这里:
    [Intellisense for Atlas Xml Script]
    http://www.flanders.co.nz/Blog/2006/05/21/IntellisenseForAtlasXmlScript.aspx">http://www.flanders.co.nz/Blog/2006/05/21/IntellisenseForAtlasXmlScript.aspx
    我觉得比你提出的这个方法要好一些,希望博主能够改进一下,不过还是谢谢博主的共享。
      回复  引用  查看    
  27. #27楼[楼主] Jeffrey Zhao      2006-09-27 12:30
    @老夫子系
    不客气。:)
      回复  引用  查看    
  28. #28楼[楼主] Jeffrey Zhao      2006-09-27 12:34
    @Beginor
    这是另外一种解决方法,很容易理解,但是我没有想到,呵呵。
    不过他的方法和我的相比,我认为还是我的比较好。
    我决定写一篇文章来比较两种方法,谢谢你的分享
    另外,它的Schema也给了我写Schema有了一个很好的参考,虽然他的Schema有很多问题。:)
      回复  引用  查看    
  29. #29楼 Beginor      2006-09-27 13:36
    希望博主更新你的Schema,现在好像没有listView之类的数据绑定的控件。
      回复  引用  查看    
  30. #30楼[楼主] Jeffrey Zhao      2006-09-27 14:10
    @Beginor
    正在进行中。:)
      回复  引用  查看    
  31. #31楼 wang bing[未注册用户]2006-09-28 09:57
    2005中文版行不行呀,我这里按你写的步骤,加上后,选项>html设计器,出错
    "加载此属性页出错"
    选项>文本编辑器>html >格式 ;也是出现同一样的错误
      回复  引用    
  32. #32楼[楼主] Jeffrey Zhao      2006-09-28 10:28
    @wang bing
    我没有用过中文版手边也没有……
    如果可以的话,您能否将屏幕解图和html文件夹下的文件打个包发给我呢?
      回复  引用  查看    
  33. #33楼 shining[未注册用户]2006-10-04 00:11
    亲爱的,赞!!!
      回复  引用    
  34. #34楼[楼主] Jeffrey Zhao      2006-10-04 01:59
    @shining
    这……
      回复  引用  查看    
  35. #35楼 shining[未注册用户]2006-10-04 15:22
    :D,可是我看不懂:(...要好好学习恩
      回复  引用    
  36. #36楼 高海东      2006-10-06 10:05
    智能提示 不错
      回复  引用  查看    
  37. #37楼[楼主] Jeffrey Zhao      2006-10-06 11:59
    @高海东
    多谢支持。:)
      回复  引用  查看    
  38. #38楼 浪花☆蝴蝶剑      2006-10-06 17:10
    这里我提两点我使用时觉得有问题的地方
    第一个就是dataPath这个智能提示.当我手动输入datap.这时智能已显示到dataPath这里时.我再敲一下"="号或回车时..输出的变成datapath了..当中p变成小写了..这就会报错了...

    第二个就是关于
    这是正确的写法:<layoutTemplate><template layoutElement="myLayoutTemplate" /></layoutTemplate>
    <itemTemplate><template layoutElement="myLayoutTemplate" /></layoutTemplate>
    这个模版定义的问题..智能感应时.每个不同的模版都显示出不同的template提示..比如:
    这是智能感应的写法,编绎不通过<layoutTemplate><template layoutTemplete="myLayoutTemplate" /></layoutTemplate>

    <itemTemplate><template itemTemplete="myLayoutTemplate" /></layoutTemplate>

    比较可以编绎通过时的写法..无论每个模版是什么.都用layoutElement
    而智能感应的写法会变成layoutTemplete,itemTemplete等...
    ..希望这个两个能修正一下....
      回复  引用  查看    
  39. #39楼[楼主] Jeffrey Zhao      2006-10-06 22:36
    @浪花☆蝴蝶剑
    多谢支持。
    第一个问题可能没有好的解决办法,由于VS设定时为了区分大小写,所以在VS里设定了“保留大小写”由于您在输入时已经将p写为了小写,所以智能提示就成为了“datapath”。您可以在输入时输入“dataP”或者直接在列表中使用上下键并且输入回车,这样就能出现“dataPath”了。:)
    关于第二个问题,我没有理解您的意思,能够再解释一下吗?我在使用时没有发现什么问题。:)
      回复  引用  查看    
  40. #40楼 浪花☆蝴蝶剑      2006-10-07 07:03
    就是在Dflying chen 的:使用ASP.NET Atlas ListView控件显示列表数据
    http://www.cnblogs.com/dflying/archive/2006/04/08/370331.html">http://www.cnblogs.com/dflying/archive/2006/04/08/370331.html
    看一下例子中使用的模版和我上面写的就知道了..
      回复  引用  查看    
  41. #41楼[楼主] Jeffrey Zhao      2006-10-07 13:01
    @浪花☆蝴蝶剑
    多谢提醒!我已经改好了。:)
      回复  引用  查看    
  42. #42楼 浪花☆蝴蝶剑      2006-10-08 05:14
    还有那个<page xmlns:script="后面的httP=那个..能不能加一个http://schemas.microsoft.com/xml-script/2005..这样就不用每次都删来改去的">http://schemas.microsoft.com/xml-script/2005..这样就不用每次都删来改去的..

    再用也还是这个<page的问题..当你打完后输入">"这个符号时..就自动变成
    <page xxxx />这种格式.麻烦..唉...几乎在page中都不用这种格式的.所以希望修改一下.当最后输入">"符号时,变成以下这种格式
    <page xxx></page>
      回复  引用  查看    
  43. #43楼[楼主] Jeffrey Zhao      2006-10-08 09:59
    @浪花☆蝴蝶剑
    page里的xmlns是不用输入的。
    另外<page />其实是VS设置的问题,和Schema无关,请看这里:
    http://www.cnblogs.com/JeffreyZhao/archive/2006/09/29/Additional_Client_Library_and_Update_Intelligence_Schema_1.html">http://www.cnblogs.com/JeffreyZhao/archive/2006/09/29/Additional_Client_Library_and_Update_Intelligence_Schema_1.html
    :)
      回复  引用  查看    
  44. #44楼 水果阿生      2006-10-09 00:33
    hi,zhao,我也遇到问题了,也是2005中文版行不行呀,我这里按你写的步骤,加上后,选项>html设计器,出错
    "加载此属性页出错"
    选项>文本编辑器>html >格式 ;也是出现同一样的错误 ,不知道是否解决了。
      回复  引用  查看    
  45. #45楼[楼主] Jeffrey Zhao      2006-10-09 01:09
    @水果阿生

    你能不能把你的“%VS8_DIR%\Common7\Packages\schemas”目录打包发给我呢?最好错误信息也让我知道一下。

    我特地到中文版的VS上试了试,没有问题啊,你可以看一下截图。


      回复  引用  查看    
  46. #46楼 水果阿生      2006-10-09 18:11
    但是我还是有问题,我截图了,怎么发给你?
      回复  引用  查看    
  47. #47楼[楼主] Jeffrey Zhao      2006-10-09 19:33
    E-mail & MSN Account:
    jeffreyzhao1985@hotmail.com
      回复  引用  查看    
  48. #48楼 candy[匿名][未注册用户]2006-10-12 11:59
    按照你的方法我依次操作后,但是现在出现了个问题
    点击 工具->选项->文本编辑器->html 中的格式、验证、杂项 全部出现了 "加载此属性页时出错"

    然后我又把注册表新加的东西去掉,还有删除Atlas_IE6_0.XSD
    还是不行
      回复  引用    
  49. #49楼[楼主] Jeffrey Zhao      2006-10-12 12:03
    sorry你是不是使用了中文版的VS?我也不知道解决办法。:(
      回复  引用  查看    
  50. #50楼 candy[匿名][未注册用户]2006-10-12 15:43
    可我同事那边却没有事情~~
    哎~只能重装一遍vs了
      回复  引用    
  51. #51楼[楼主] Jeffrey Zhao      2006-10-12 15:53
    @candy[匿名]
    是啊,不好意思了。:(
      回复  引用  查看    
  52. #52楼 candy[匿名][未注册用户]2006-10-12 17:37
    恢复了一下vs。现在正常了。代码提示也可以用了
      回复  引用    
  53. #53楼[楼主] Jeffrey Zhao      2006-10-12 19:29
    @candy[匿名]
    哎,好奇怪,莫非是和某些组件有冲突……
      回复  引用  查看    
  54. #54楼 cathsfz      2006-10-24 01:16
    Xml-Script不是不好用,但它只能负责“很静态”的东西,所谓的绑定就如aspx中的绑定一样只能应付有限的情况。

    开发复杂的东西,在服务器端要懂得制作自己的控件,完全没有aspx这样“方便”的书写方式,就靠C#。在客户端也如此,面对复杂的情况你只能选择用JavaScript,直到制作好自己的控件,Xml-Script才帮得上忙。然而服务器端新增控件也能一定程度上IntelliSense,客户端控件就不行了。还是等下一版代号Oscar的VS吧,到时候会支持的。
      回复  引用  查看    
  55. #55楼[楼主] Jeffrey Zhao      2006-10-24 02:10
    @cathsfz
    其实开发ASPX,无论客户端还是服务器端都是非常灵活的,因此可以使用别的方式来“支援”现有的功能。如果提供的功能大都是非常常用的,这就够了。:)
      回复  引用  查看    
  56. #56楼 oliver[未注册用户]2006-11-16 23:26
    我在里面vs中编C++,先前有代码提示,后来不知怎么就没了?搞得我还以为是自己代码有问题。不知道那位可以帮忙恢复此功能。先谢谢了
      回复  引用    
  57. #57楼[楼主] Jeffrey Zhao      2006-11-16 23:29
    @oliver
    对不起,这个我不太清楚。:(
      回复  引用  查看    
  58. #58楼 蛙蛙池塘      2006-12-02 22:59
    好,为什么微软不提供这个功能呢?上次我使用atlas的时候好像有提示的。
    你一个月写这么多文章,我一个月看也看不过来,呵呵。不知道老赵现在都看些啥书呀?
      回复  引用  查看    
  59. #59楼[楼主] Jeffrey Zhao      2006-12-02 23:14
    @蛙蛙池塘
    因为还没有正式确定不好做吧……
    我其实一直在看一些Architectrue,OOAD方面的书,AJAX说起来……不如我对那些东西感兴趣。:)
    // 其实已经不用看这些CTP的内容了,完全过时了……
      回复  引用  查看    
  60. #60楼 martinyao[未注册用户]2007-07-16 11:09
    能不能搞個Ajax腳本提示的東西出來?
      回复  引用    
  61. #61楼[楼主] Jeffrey Zhao      2007-07-16 11:51
    @martinyao
    等2008吧,呵呵。
      回复  引用  查看    
  62. #62楼 黄.net[未注册用户]2008-02-25 16:24
    http://www.91l0ve.org.cn
    如何能将textbox中的文字中加入<br/>呢,
    以保持在输入式的布局;希望各位打下能告诉我,
    期待中...
    在实验一次*^_^*
      回复  引用    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 514271




相关文章:

相关链接: