CN1670715A - 在公共语言运行时语言中的资源地址支持 - Google Patents

在公共语言运行时语言中的资源地址支持 Download PDF

Info

Publication number
CN1670715A
CN1670715A CNA2005100594284A CN200510059428A CN1670715A CN 1670715 A CN1670715 A CN 1670715A CN A2005100594284 A CNA2005100594284 A CN A2005100594284A CN 200510059428 A CN200510059428 A CN 200510059428A CN 1670715 A CN1670715 A CN 1670715A
Authority
CN
China
Prior art keywords
resource
developer
resource identifier
information
string
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005100594284A
Other languages
English (en)
Other versions
CN1670715B (zh
Inventor
J·M·科利
M·J·曼克努尔蒂
M·A·沃特金斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1670715A publication Critical patent/CN1670715A/zh
Application granted granted Critical
Publication of CN1670715B publication Critical patent/CN1670715B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Abstract

公开了一种用来在受控代码执行环境的情况中在运行时之前减少编码错误的计算机实施的方法。该方法包括提供给开发人员到多个受控代码资源的访问。该方法还包括验证由开发人员输入的资源标识符对应于所述多个受控代码资源中的其中一个。

Description

在公共语言运行时语言中的资源地址支持
(1)技术领域
本发明一般涉及提供给软件开发人员的编程工具,尤其涉及用于对资源,特别是符合公共语言规范的资源进行寻址的编程工具。
(2)背景技术
在受控代码执行环境内的编程在现有技术中是已知的。该种环境的一个已知例子是包括公共语言运行时(CLR)的环境。编译器和工具向开发人员展露运行时功能性,并使开发人员能够编写受益于受控代码执行的代码。用以运行时为目标的语言编译器开发的代码被称作受控代码。受控代码受益于诸如跨语言集成、跨语言例外处理、增强的安全性、版本和部署支持、组件交互的简化模型、和调试与描述(profiling)业务的特点。
都已理解的理论是,不管其它对象是用什么语言实现的,为了要与其它对象充分地交互,,则对象应当将那些即将与它们进行互操作的语言所公有的特征展露给调用程序。以这种理论为出发点,已经定义出了公共语言规范(CLS),这是一组在多应用程序间共用的基本语言特征。以CLR为目标的语言通常同意支持CLS特征和遵循指向编译器的CLS规则。用于以CLR为目标的语言的编译器通过使得CLS数据类型和特征能够被用来创建组件而简化了CLS顺从性。如果一个组件在暴露给其它代码(包括导出类)的API中只使用CLS特征,那么基本上可以保证任何支持CLS的编程语言都可以访问该组件。遵守CLS规则并且仅使用包括在CLS内的特征的组件被称作CLS顺从组件。
一般来说,目前的开发环境在设计时仅提供了对管理资源的粗略级支持,尤其是对于CLS顺从资源。为了将资源插入代码中,开发人员通常需要硬编码一个参考标识符(例如,从存储器中)。可选地,开发人员从参考文件中复制一个参考标识符(例如,要求开发人员在编码程序和参考文件之间来回切换)。
资源的参考标识符通常包括键名和字符串。鉴于资源管理的目前的支持级别,存在着开发人员不能正确地键入键名和字符串的显著危险。虽然查阅参考文件来获得键名或字符串的过程理论上能够减少差错,但是要额外付出努力却不胜其烦,从而可论证地给开发人员提供了猜测正确值的动机。当然,猜测的过程容易出现错误。
普遍的情况是,发源于不精确寻址的资源的程序缺陷不会产生建立时(build-time)差错,且通常只是在运行时才暴露出来。这就意味着在产品处于测试时,通常必须命中实际上行使不正确寻址资源的代码路径。在没有代码侵入措施的情况下,识别所有的寻址错误是很困难的。而且,在这种测试环境下进行寻址纠正时,通常要求应用程序的测试人员正确地解释寻址错误,这并不总是一个容易而直接的任务。
(3)发明内容
本发明实施例涉及用来在受控代码执行环境的情况下,在运行时之前减少编码错误的计算机实施方法。该方法包括提供给开发人员到多个受控代码资源的访问接入。该方法还包括验证由开发人员输入的资源标识符是对应于所述多个受控代码资源中的其中一个。
(4)附图说明
图1是可以实施本发明的一个计算环境的框图。
图2是显示代码开发环境的示意框图。
图3是示例性屏幕抓图。
图4是示例性屏幕抓图。
图5是与直接访问有关CLS顺从资源的信息相关联的步骤的流程图。
(5)具体实施方式
图1显示了在其中可以实施本发明的合适计算系统环境100的例子。计算系统环境100仅仅作为合适计算环境的例子,目的不在于暗示有关本发明用途或功能的任何限制。计算环境100不应该解释为对与在典型操作环境100中所示的任何一个组件或其组合有依赖性或需求性。
本发明可以在多种其它通用或专用计算系统环境或配置中运行。适用于本发明的熟知计算系统、环境和/或配置的例子包括,但不局限于,个人计算机、服务器计算机、手持或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子、网络PC、迷你计算机、巨型计算机、电话系统、包括上述系统或设备的任意组合的分布式计算环境、等等。
本发明可以用由计算机执行的计算机可执行指令的通用上下文来描述,例如程序模块。一般,程序模块包括线程、程序、对象、组件、数据结构、等等,它们执行特定的任务或实施特定抽象数据类型。本发明还可以在分布式计算环境中实施,在这种环境中,任务由通过通信网络连接的远程处理执行。在分布计算环境中,程序模块可以处在包括存储设备在内的本地及远程计算机存储介质中。
参考图1,实施本发明的典型系统包括计算机110形式的通用计算设备。计算机110的组件可以包括中央处理单元120、系统存储器130、和把包括该系统存储器在内的各种系统组件连接到处理单元120的系统总线121,但不限于此。
系统总线121可以是几种类型总线结构中的任意一种,包括存储器总线或存储器控制器、外设总线、和使用多种总线体系结构的任意一种的本地总线。作为例子,而非限制,此类体系结构包括工业标准结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线、和也称之为Mezzanine总线的外设组件互联(PCI)。
计算机110通常包括多种计算机可读介质。计算机可读介质可以是计算机110可以访问的任何可用介质,并包括易失和非易失性介质、可移动和不可移动介质。作为例子,但不是限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括易失和非易失、可移动和不可移动介质,这些介质以存储诸如计算机可读指令、数据指令、程序模块或其它数据的信息的任何方法或技术来实施。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字多用盘(DVD)或其它光盘存储器、磁盒、磁带、磁盘存储器或其它磁性存储设备、或任何其它可以用来存储所需信息并可以由计算机110访问的介质。作为例子,非限制,通信介质包括诸如有线网络或直接有线连接的有线介质、和诸如声波、RF、红外线和其它无线介质的无线介质、上述任意介质的组合也应该包括在计算机可读介质的范围内。
系统存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132形式的易失和/或非易失存储器。包含有助于例如在启动期间在计算机110内的单元之间传递信息的基本线程的基本输入/输出系统(BIOS)133通常存储在ROM 131中。RAM 132通常包括可立即被处理单元120访问的和/或当前正在操作于其上的数据和/或程序模块。作为例子,而非限制,图1显示有操作系统134、应用程序135、其它程序模块136、和程序数据137。
计算机110还可以包括其它可移动/不可移动易失/非易失计算机存储介质。仅仅作为例子,图1显示了从不可移动、非易失磁介质读写的硬盘驱动器141,从可移动、非易失磁盘152读写磁盘驱动器151,和从诸如CD-ROM或其它光介质的可移动、非易失光盘156读写的光盘驱动器155。其它可以用于示例性操作环境中的可移动/不可移动、易失/非易失计算机存储介质包括但不限于:磁带盒、闪存卡、数字多用盘、数字视频带、固态RAM、固态ROM、等等。硬盘驱动器141通常通过例如接口140的不可移动存储器接口连接到系统总线121,而磁盘驱动器151和光盘驱动器155通常通过例如接口150的可移动存储器接口连接到系统总线121。
上面所讨论并在图1中显示的驱动器及其相关计算机存储器介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储器。在图1中,例如,硬盘驱动器141用于存储操作系统144、应用程序145、其它程序模块146、和程序数据147。注意,这些组件既可以与操作系统134、应用程序135、其它程序模块136、和程序数据137相同也可以不同。操作系统134、应用程序135、其它程序模块136、和程序数据137在此被赋予不同的标号,至少显示它们是不同的拷贝。
用户可以通过例如键盘162、麦克风163、和诸如鼠标、跟踪球或触摸板的定位设备161等输入设备输入命令和信息到计算机110中。其它输入设备(未示出)可以包括游戏杆、游戏板、卫星盘、扫描仪、等。这些和其它输入设备通常是通过连接于系统总线的用户输入接口160连接到处理单元120的,但是也可以通过其它接口和总线结构来连接,例如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过例如视频接口190的接口连接到系统总线121。除了监视器之外,计算机还可以包括例如扬声器197和打印机196的其它外围输入设备,它们可以通过输出外设接口190来连接。
计算110可以工作在使用到一个或多个例如远程计算机180的远程计算机的逻辑连接的组网环境中。远程计算机180可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其它公用网络节点,并通常包括与计算机110相关描述于上的许多个或所有元件。图1所描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可以包括其它网络。这种组网环境在办公室、企业范围内的计算机网络、企业内部网和因特网中是很普遍的。
当用于LAN组网环境时,计算机110被通过网络接口或适配器170连接到LAN 171。当用于WAN组网环境时,计算机110通常包括用来在WAN 173(例如,因特网)上建立通信的调制解调器172或其它装置。调制解调器172,可以是内置的也可以是外置的,可以通过用户输入接口160或其它合适机制连接到系统总线121。在组网环境中,与计算机110相关描述的程序模块或其部分可存储在远程存储器存储设备中。作为例子,而非限制,图1显示有驻留于远程计算机180上的远程应用程序185。应该理解,所示网络连接是示例性的,并可以使用在计算机之间建立通信链路的其它手段。
图2是显示根据本发明一个方面的代码开发环境201的示意框图。该环境包括设计程序202和受控代码基础结构204。基础结构204示例被图示为—尽管并不必须是—一种包括但不限于由美国Washington州Redmond市的微软公司提供的现有.NET框架的环境的受控代码执行环境。
设计程序202是一种开发工具,尤其是与受控代码基础结构204联合运作以提供用于设计、构建、测试和部署应用程序的工具的编程环境。例证性的设计程序202为在由微软公司提供的VISUAL STUOIO.NET系列产品中的程序,尽管不是必须的。受控代码基础结构204示例性地包括配置成支持跨语言顺从代码的受控代码执行环境。根据一个实施例,基础结构204包括微软公司的.NET基础结构的公用语言运行时组件,其中,在这种情况下,设计程序202被配置成与受控代码基础结构204协作来产生至少部分地CLS顺从的代码。
根据本发明的一个方面,受控代码基础结构204和设计程序202一起提供了管理由受控代码基础结构204支持的语言的资源信息207的资源管理器。根据一个实施例,资源信息207包括与CLS顺从资源有关的信息。在图2内,资源管理器208和信息207显示为虚线框,其分离于程序202和基础结构204。这种布置目的在于反映这样的事实,即,精确实现对于本发明来说并不是关键。资源管理器和信息可以作为基础结构204的部分、作为程序202的部分、作为度量组件或其它形式来实现。
资源请求被通过多种已知的可接受方法的任何一种而传输到资源管理器208。根据一个实施例,资源示例性地通过“GetString(string KeyName)”方法来请求。例如,在设计时,开发人员与程序202接口,并创建包括对资源管理器208进行调用的代码,例如对作为资源信息207的部分而维持的CLS顺从组件的调用。所编码的资源调用示例性地包括与所需资源相关的字符串和键名的指示。基于所编码的资源调用,在过程的某一刻,使用“GetString(stringKeyName)”调用向资源管理器208做出相应字符串资源的请求。如果在设计时没能正确地输入字符串和/或键名(例如,在KeyName中的打字错误),那么直到运行时才能发现该错误的并不鲜见。另外,可以使用除了上述GetString方法之外的方法,而不会脱离本发明的范围。
根据本发明的一个方面,设计程序202包括总体上配置成用来在运行时之前减少或消除资源寻址错误的StringRes工具206。StringRes工具206被示例为补充设计程序202以便有助于更好地管理字符串资源的定制工具。根据一个实施例,StringRes工具206被作为设计程序202的一个组成部分。根据另一实施例,StringRes工具206是可以被集成在或安装到程序202中的升级。
根据一个实施例,假设设计程序202包括StringRes工具206,该工具自动与由开发人员使用设计程序202启动的任何编码项目相关联。然而,根据另一个实施例,只有当该工具被打开或在特定项目的上下文环境中安装时(即,该工具是有选择性地在项目基础上一一激活的),才能向开发人员提供工具206的功能性。
图3是屏幕视图300,表示的是设计程序202的界面的可能外观的一个例子。开发人员示例性地将代码输入到编码区域302。在平面视图300的具体上下文中,如由高亮标签304所指示的那样,开发人员正在协同指定为“Formal.cs”的文件创作代码。
提供有文件选择区域305以便开发人员能够在不同文件和不同项目之间移动。提供配置区域306以便开发人员能够至少有选择性地激活或去激活诸如StringRes工具206的各种编程工具。在屏幕视图300的具体上下文中,如在区域306内所指示的那样,StringRes工具已经协同“FROM1.RESX”文件激活。从而,当他或她在FROM1.RESX文件的上下文中输入代码时,向开发人员提供StringRes工具的功能性。根据一个实施例,该功能性还可以被扩展到具备与Form1.resx文件的预定层次关系的文件。因此,根据本发明的一个方面,StringRes工具是被实现为在需要时才激活的定制编程工具。为了描述本发明,将假设StringRes工具206还为“FROM1.CS”文件激活,其是在编码区域302中打开的文件。
以此存于脑海,根据本发明的一个方面,与StringRes工具相关联的子系统(例如,项目管理子系统)能够根据正在从事的项目所使用的特定CLR顺从语言进行响应。当有新文件添加到项目中,或现有的文件被修改时(例如,通过触及CustomTool属性),该文件的父文件被检查。父文件确定该项目是C#、C++、VB等等。基于该确定,代码以该项目的适当语言进行发布。以这种方式,一个设计程序方案可以包含多个项目,且StringRes工具可以容纳。
根据本发明一个方面,StringRes工具206提供给开发人员方便的设计时对资源地址/索引信息、以及可任选地对应于该目录资源的值的可用性。根据一个实施例,以显示在有助于开发人员完成语句和函数的弹出窗口和/或下拉列表中(例如,直接显示于设计程序界面内)的信息的形式提供对资源的访问。例如,对应于可用资源的标识符信息(即,键名、字符串和/或值信息)显示给开发人员以完成选择和语句。
根据一个实施例,有效资源信息是为特定资源参考而显示的。例如,在输入资源对象、命令或函数之后,激活器键启动对当前命令或函数有效值的下拉列表的显示。根据一个实施例,激活器键是一个句号(.)。根据其它实施例,激活器键是空格键、左(开)括号键、或一些其它键调用。根据一个实施例,通过下拉列表导航(即,滚动)或键输入,并在其中一个可用选择上停止(例如,预定的时量)键,能够在靠近下拉菜单弹出的窗口中显示附加的信息。
根据一个实施例,在设计程序界面上提供给开发人员能够使得他或她调整资源信息自动传送状态为自动、手动或无效的选项。当设定为自动时,在按压激活器键时,资源列表自动显示。当设置为手动时,在光标位于与信息的可用性相关联的位置时,开发人员可以选择性地激活资源信息的显示(例如,使用编辑菜单命令、快捷菜单选择、或CTRL-键组合)。根据一个实施例,与CLS顺从资源特别相关的信息通过作为StringRes工具206组件提供的所述设计程序界面更新来使得对于开发人员可用。
一般而言,StringRes工具206能够为资源标识符和相应信息的选择建立有效交叉参考,尤其是对于与CLS顺从资源相关的标识符和信息。因此,根据本发明的一个方面,当开发人员输入资源类并随后使用激活键时,就自动提供列表(例如,下拉菜单)来显示相关的可访问方法和属性。根据一个实施例,自动产生的列表是可用字符串键名的集合。根据另一个实施例,点亮其中一个键名则启动相关字符串值(例如,在弹出框内)的提供。
图4是表示设计程序202界面另一个例子的平面视图400。图4中的抓图基本上类似于图3的抓图,并且对于StringRes工具206被激活的假设仍然有效。在位置425处的编码区域内,开发人员已经键入“FROM11”,其示例为输入资源标识符的先趋符。在该先趋符之后,开发人员键入了句号(.),其示例为一个激活器键,该键以下拉菜单430的形式启动来自StringRes工具206的响应。菜单430示例性地包含对于相应先趋符输入条目有效的资源信息。
根据一个实施例,在下拉框中的信息以分层方式排列。例如,资源可以示例为基于多种语言可用,每种语言对应于作为与更宽资源单元相关的分层单元显示于该框中。当然,可以基于语言以外的其它任何因素来进行组织。应该注意,菜单430可以配置成包含多于所示的六种选择(例如,按字母顺序或其它排列可滚动的列表)。在菜单430中的所列的单元可以是—但不必是—对应于诸如CLS顺从单元的单元。
继续该例子,然后,开发人员通过菜单430进行导航并停在“MICHELLELOC”条目上。暂停于该条目之上示例性地启动相应弹出框436的出现,该框包含与从菜单430中选择的单元相关的字符串和/或值信息。最后,开发人员从菜单430选择其中一个条目。选择将使得资源键名、字符和/或值被自动插入到代码的合适位置中。
图5是显示与本发明实施例相关联的步骤的流程图。根据块502,向开发人员提供到CLS顺从资源的访问。根据步骤504,在代码开发期间,呈现给开发人员各自表示CLS顺从资源的资源标识符的集合。如步骤506所指示的那样,开发人员接着从该集合中选择表示所需CLS顺从资源的标识符。最后,根据步骤508,将相应的精确信息包括到开发人员的项目中。
根据本发明的另一方面,StringRes工具206提供对于构建时检查的支持来确定资源,尤其是CLS顺从资源是否因差错而寻址。该检查是通过比较在代码内的资源标识符和有效值的集合(例如,被维护以便支持所描述的设计时资源信息的提供的资源值的相同集合)来进行的。如果存在不匹配所存储值的资源值,就示例性地向开发人员报告错误以进行纠正。根据一个实施例,该系统配置成使得开发人员能够在需要时添加信息到有效值列表中,以配置该系统使其接受新的或不同资源输入。
根据一个实施例,参考图3的屏幕抓图,为了将资源工具扩展到新的资源信息,开发人员选择(例如,右击)在区域305方案浏览器内的项目。然后,开发人员可以启动把具有扩展名“.strings”的文件添加到项目文件。接着,根据需要添加新的字符串到.strings文件中。
根据一个更具体的实施例,为了添加新的资源信息,开发人员首先通过选择(即,右击)在方案区域305内的一个项目来引出功能选项菜单。然后,开发人员选择“添加新条目”功能以便产生对话框。接着,开发人员选择“资源”类目和字符串资源工具子类目以便向该项目添加具有“.strings”扩展名的文件。在方案浏览器中选择“显示所有文件”选项将示例性地展示该.strings文件具有两个子项目:一个“.cs”文件和一个“.resx”文件。示例性地,子文件不可以被直接编辑,因为它们是从.strings文件生成的。这些文件并不是在构建时生成,而是在每当存在对于.strings文件的改变、或对于.strings文件的定制工具或定制工具名空间属性的改变时才生成。
为了添加资源信息,开发人员只需将信息添加到.strings文件,例如,使用格式“<KeyName>=<value>”。该格式的一个例子是:
SimpleMsg=this is a simple message.
.strings文件的缺省文件名示例为STR1.strings,其在子文件“.cs”文件中产生以“STR1”命名的类(该类名来自文件名)。因此,例如,在C#编程环境中,下面的例子将是一个精确的例子:
STR1.SimpleMsg;//the string returned from this would be″This
is a simple message.″
使用字符串格式(string.format)的普通操作示例性地也由该工具来照顾。
例如:
FileNotFoundError(filename,description,int retries)=The
file{0}was not found because{1}.The number of retry attempts
was{2}.
不指定给定参数类型示例性地将该类型缺省为System.String(系统字符串)。在C#编程环境中,可应用的例子为:
STR1.FileNotFoundError(″myFile.abc″,″the file was deleted″,
30);//This would print:The file myFileabc.was not foundbecause
the file was deleted.The number of retry attempts was 30.
在.strings文件中的注释示例性地以井(pound)号(#)或分号(;)开头。标记为井号的注释示例性地从外部是看不到的,而那些由分号标记的通常是可用的。从外部看得到的注释被输出到.resx文件。示例性地,如果而且只有在该行中的第一字符是“#”或“;”时,StringRes工具才识别为有效注释行。
在.strings文件中的每个消息示例性地在自动产生的类中产生两个访问器(accessor)。一个用于“不确定语言的”和另一用于“指定语言的”。对于简单类型的消息,该访问器是一个字段。为了添加语言作为参数,要添加函数,并且稍稍改变其名称(例如,将“Loc”添加在字段名后)。对于采用参数的消息,名称不变;且只有参数列表改变(即,添加一CultureInfo参数)。对于自动产生的.cs文件的随意观察将显示细节。
添加到项目时,.strings文件示例性地会使定制工具属性设定为“StringRes”、定制工具名空间(Custom Tool Namespace)设定为空、构建动作(Build Action)设定为“none”(无)。用于StringRes的输出的名空间是从项目中获得的,但它可以示例性地通过将Custom Toll Namespace设定至所需的输出名空间而被忽视。
设计程序识别StringRes工具作为定制工具(Custom Tool)的方式示例性地是通过在方案浏览器中具有客户工具属性设为StringRes的的文件而进行的。因此,只要客户工具属性被设为StringRes并且文件处于有效格式中,那么添加.txt或.abc文件就好了(即,在C#项目中)。
在产品中部署了与文化无关的资源之后,示例性地,loc资源可以在任何时进行部署,而无需对二元(binary)有任何触及;并且不需要重新构建。如果字符串资源被请求,而在运行时不可用,那么就示例性地遍历该资源的层次体系,并将该体系的根作为与文化无关的资源集。因此,如果请求了一个日语字符串,但是不可用,那么就返回英语字符串。如果后来日语资源集变得可用了,那么就返回日语字符串。
作为例子,考虑以下场景:
1)AppX使用嵌入在可执行AppX中的字符串资源;
2)六个星期之后,在奥地利突然产生了对AppX的兴趣,奥地利-德语在System.Localization.CultureInfo类中为“de-At”;
3)在AppX的可执行目录中,创建“de-At”的子目录以及为标准德语创建的子目录“de”;
4)奥地利-德语的loc卖主迟到,但是标准德语中的局部化资源及时被接收到;
5)局部化资源被放入“de”子目录中,其中loc资源仍运行,而AppX是热放的(dropped hot)(例如,不必重新开始该业务);
6)对于“de-At”字符串的请求被用“de”字符串返回;和
7)在后面的某个日子,当“de-At”资源被放下时,就返回它们。
根据一个实施例,StringRes工具配置成管理多个字符串,其表示被以某种形式提供给用户(例如,在下拉列表框内)。该工具提供了自动完成功能,其中当用户选择了StringRes正在管理的其中一个条目时(例如,从下拉框中选择),该字符串的值就以某种形式提供给用户(例如,在弹出框内)。
例如,考虑StringRes工具管理包括“mystring=this is my string”在内的STR1.strings的情形。如果,在设计程序界面内,用户在合适的位置键入STR1(例如,作为VisualStudio.net IDE),那么将显示相应选项的列表(例如,在下拉列表框内)。如果用户从选项列表中选择了myString,那么该工具将报告相应的值(例如,“this is my string”)。根据一个实施例,该值被报告于气球或弹出框内。因此,用户能够在设计时获得所寻址的字符串的****
在此所描述的方法一般减少或消除了资源寻址的错误,从而防止了将错误引入到应用程序中。在设计时提供资源的值,尤其是CLS顺从资源的值,增强了代码开发的生产率和精确性。
本说明书包括有关如何特别地添加字符串到.strings文件的解释。根据本发明的一个方面,StringRes工具还可处理标准文件(例如,标准.resx文件)。根据一个实施例,当字符串定义被通过StringRes工具功能性而添加到可用的定义中时,所需的只是名称/值对(例如,“mystring=this is my string”)。
虽然本发明是参考特定实施例进行了描述,但是本领域熟练人员将认识到,在不脱离本发明精神和范围的情况下,可以在形式和细节上做出变化。

Claims (25)

1、一种用来在受控代码执行环境的上下文中在运行时之前减少编码错误的计算机实施方法,包括:
向开发人员提供对多个受控代码资源的访问;和
验证由开发人员输入的资源标识符对应于所述多个受控代码资源中的其中一个。
2、根据权利要求1的方法,其中验证包括:
向所述开发人员提供资源标识符的集合;和
以从所述资源标识符集合中选择的形式接收由开发人员输入的所述资源标识符。
3、根据权利要求2的方法,其中提供资源标识符集合包括:
提供对应于由开发人员选择的特定类的资源标识符的集合。
4、根据权利要求2的方法,其中提供资源标识符集合包括:
响应于开发人员激活键的输入而提供资源标识符集合。
5、根据权利要求4的方法,其中响应于激活键输入而提供包括:
响应于在输入资源类之后的激活键的输入而提供。
6、根据权利要求2的方法,其中提供资源标识符的集合包括:
提供键名集合。
7、根据权利要求6的方法,进一步包括向开发人员提供对应于资源键名集合中所选的一个的资源值。
8、根据权利要求2的方法,进一步包括向开发人员提供对应于资源标识符集合中所选一个的资源值。
9、根据权利要求8的方法,其中提供资源值包括在弹出框内提供信息。
10、根据权利要求2的方法,其中提供所述资源标识符的集合包括在下拉菜单内提供信息。
11、根据权利要求1的方法,其中向开发人员提供对多个受控代码资源的访问包括向开发人员提供对符合公共语言规范的多个资源的访问。
12、根据权利要求1的方法,进一步包括从开发人员接收对于受控代码资源的添加。
13、根据权利要求2的方法,其中提供资源标识符集合包括:
响应于开发人员的对应于显示资源信息的请求的输入而提供资源标识符集合。
14、根据权利要求2的方法,其中响应于开发人员的对应于显示资源信息的请求的输入而提供资源标识符集合包括:
响应于当光标位于与信息可用性相关的位置时由开发人员做出的输入,提供资源标识符集合。
15、根据权利要求2的方法,其中向开发人员提供资源标识符集合包括向开发人员提供包括至少两个标识符的资源标识符集合,其中每一个标识本质上相同资源的不同语言版本。
16、一种用来开发软件应用程序的系统,包括:
受控代码基础结构,其提供受控代码执行环境;
设计程序,其提供支持开发人员生成至少部分地以受控代码执行环境为目标的代码的代码生成环境;
字符串资源工具,其补充所述设计程序并使开发人员能够验证资源标识符被正确地寻址以便对应于由受控代码执行环境所支持的受控代码资源。
17、根据权利要求16的系统,其中字符串资源工具进一步被配置成使开发人员能够验证资源标识符被正确地寻址以便对应于符合公共语言规范的资源。
18、根据权利要求17的系统,其中字符串资源工具被配置成使得开发人员能够验证通过下面步骤来验证资源标识符被正确地寻址:
通过界面向所述设计程序提供资源标识符集合;和
以从资源标识符集合中选择的形式,接收由开发人员输入的资源标识符。
19、根据权利要求18的系统,其中所述字符串资源工具进一步配置成通过所述设计程序界面提供资源键名信息。
20、根据权利要求18的系统,其中字符串资源工具进一步配置成通过设计程序界面提供值信息。
21、一种用来在受控代码执行环境的上下文中在运行时之前减少编码错误的字符串资源工具,包括:
工具组件,其通过设计程序界面提供字符串信息,其中所述字符串信息使得开发人员能够从一可选对象的闭集中选择一表示特定字符串的特定标识符。
22、根据权利要求21的字符串资源工具,其中所述字符串信息使开发人员能够从一可选对象的闭集中选择一符合公共语言规范的表示特定字符串的特定标识符。
23、根据权利要求21的字符串资源工具,其中所述可选对象的闭集对应于由开发者选择的特定类。
24、根据权利要求21的字符串资源工具,其中所述工具组件配置成响应于开发人员的激活键输入而提供字符串信息到所述设计程序界面。
25、根据权利要求21的字符串资源工具,其中所述工具组件进一步配置成通过设计程序界面提供在所述可选对象闭集中表示的至少一个标识符的值信息。
CN2005100594284A 2004-03-17 2005-03-17 在公共语言运行时语言中的资源地址支持 Expired - Fee Related CN1670715B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/802,422 2004-03-17
US10/802,422 US7814464B2 (en) 2004-03-17 2004-03-17 Address support for resources in common-language runtime languages

Publications (2)

Publication Number Publication Date
CN1670715A true CN1670715A (zh) 2005-09-21
CN1670715B CN1670715B (zh) 2011-02-09

Family

ID=34838905

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005100594284A Expired - Fee Related CN1670715B (zh) 2004-03-17 2005-03-17 在公共语言运行时语言中的资源地址支持

Country Status (5)

Country Link
US (1) US7814464B2 (zh)
EP (1) EP1577762A3 (zh)
JP (1) JP4851107B2 (zh)
KR (1) KR101114038B1 (zh)
CN (1) CN1670715B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064647A (zh) * 2021-03-26 2021-07-02 山东英信计算机技术有限公司 一种bios中配置项目端口的方法、装置、终端及存储介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626437B2 (en) * 2004-06-10 2017-04-18 International Business Machines Corporation Search scheduling and delivery tool for scheduling a search using a search framework profile
US7802228B2 (en) * 2004-08-19 2010-09-21 Microsoft Corporation Systems and methods for varying software build properties using primary and supplemental build files
US8117601B2 (en) * 2007-11-14 2012-02-14 Microsoft Corporation Internal test and manipulation of an application
US20110271258A1 (en) * 2010-04-30 2011-11-03 Microsoft Corporation Software Development Tool
US8667456B1 (en) * 2011-04-20 2014-03-04 Google Inc. Cloud-based indexing for integrated development environments
US9760415B2 (en) 2014-05-16 2017-09-12 Microsoft Technology Licensing, Llc Code service for language-independent dispatch

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281879A (ja) * 1994-04-11 1995-10-27 Hitachi Ltd アプリケーションプログラム編集装置
US5640558A (en) * 1995-05-31 1997-06-17 International Business Machines Corporation Identifying and analyzing multiple level class relationships in an object oriented system by parsing source code without compilation
JPH10254688A (ja) * 1997-03-07 1998-09-25 Toshiba Corp プログラム作成支援装置
JP2001175596A (ja) * 1999-12-14 2001-06-29 Nec Corp コマンド処理装置、コマンド処理方法、およびそのプログラムを記録した記録媒体
JP2002082804A (ja) * 2000-09-06 2002-03-22 Akifumi Watanabe 動的識別子情報を利用するエディタ
US6799718B2 (en) * 2001-07-10 2004-10-05 Borland Software Corp. Development assistance for mixed-language sources
US6965990B2 (en) * 2001-10-23 2005-11-15 International Business Machines Corporation Method and apparatus for providing programming assistance
US20040015564A1 (en) * 2002-03-07 2004-01-22 Williams Scott Lane Method of developing a web service and marketing products or services used in developing a web service

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064647A (zh) * 2021-03-26 2021-07-02 山东英信计算机技术有限公司 一种bios中配置项目端口的方法、装置、终端及存储介质

Also Published As

Publication number Publication date
US7814464B2 (en) 2010-10-12
JP4851107B2 (ja) 2012-01-11
EP1577762A2 (en) 2005-09-21
CN1670715B (zh) 2011-02-09
JP2005267644A (ja) 2005-09-29
US20050210449A1 (en) 2005-09-22
KR101114038B1 (ko) 2012-02-21
EP1577762A3 (en) 2006-01-18
KR20060044361A (ko) 2006-05-16

Similar Documents

Publication Publication Date Title
CN100573503C (zh) 自动生成内容的方法和系统
CN101223497B (zh) 用于提供丰富的拖放用户界面的方法
CN100524225C (zh) 由应用程序提供直接访问功能的方法
CN1245692C (zh) 确定计算机系统配置的方法和生成计算机系统订单的系统
CN1940914A (zh) 用于一起复制和粘贴多个数据的方法和设备
US20070250810A1 (en) Systems and methods for managing data associated with computer code
CN1811685A (zh) 以文档为中心的软件应用程序的面向任务的用户界面模型
CN1821943A (zh) 使用活动内容向导和帮助文件的任务的可发现性—“现在我能做什么?” 特征
CN1670715B (zh) 在公共语言运行时语言中的资源地址支持
CN1855039A (zh) 用于创建、储存、管理和消费文化专用数据的方法和系统
CN1609764A (zh) 向输入法提供上下文的系统和方法
CN1702621A (zh) 采用表的语言的本地化
CN1831854A (zh) 识别计算环境中实际清单与期望清单的不同的系统和方法
CN1855009A (zh) 可搜索控制模板功能的基于任务的界面
CN1239253A (zh) 根据历史使用情况调整用户界面元素的方法
CN1949179A (zh) 利用只读进程组件对服务进程建模的方法和系统
CN1755679A (zh) 用于引用电子表格公式内动态数据的方法和实现
CN101223496A (zh) 丰富的拖放用户界面
CN1815440A (zh) 用于数字设备菜单编辑器的方法和系统
CN1495609A (zh) 在计算机生成文档中提供语境感测工具和帮助内容
US20180129482A1 (en) Generation of application behaviors
CN101535934A (zh) 提供用于查看和编辑元数据的定制用户界面的方法和系统
CN103098051A (zh) 搜索引擎优化助理
CN1755683A (zh) 上下文动作的发布
CN1678994A (zh) 用于提供访问用户界面信息的系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110209

Termination date: 20180317