Sharepoint学习笔记—习题系列--70-573习题解析 -(Q144-Q146)
Question 144
You are developing a Feature that will be used in multiple languages.
You need to ensure that users view the Feature's title and description in the display language of their choice.
What should you create?
A. a Feature event receiver
B. a site definition
C. multiple Elements.xml files
D. multiple Resource (.resx) files
解析:
本题的实质是想实现Sharepoint网站的语言支持或本地化。
本地化 是自定义给定区域性或区域设置下的应用程序、网页或网站的过程。在 Microsoft SharePoint Foundation 2010 中,本地化主要包括翻译用户界面 (UI) 的显示文本。网站 UI 有时称作“部件版式”,即与控件和表单关联的视觉元素,尤其是标题栏、菜单和导航链接,以及用于构架和组织内容或帮助用户与之交互的所有元素。
利用多语言用户界面 (MUI) 功能,用户可以更改 SharePoint Foundation 2010 UI 的语言。例如,讲西班牙语但在英语用户界面中工作的用户可以通过使用任何页面右上角的控件,将显示语言更改为西班牙语。该用户可以单击用户名对应的箭头,指向“选择显示语言”,然后单击“Español”。随即网站的工具栏、导航栏、列表标题和列标题将显示为西班牙语。
若要使这种操作正常执行,服务器场管理员必须下载和安装要支持的每种语言的 SharePoint Foundation 2010 语言包,而且网站所有者必须启用备用语言支持。
所以使用语言包是实现本地化的一个层面,但MUI 功能不是翻译工具。如果安装了某个语言包,则 MUI 可以在显示 SharePoint Foundation 中包含的用户界面文本时切换到该语言。可是MUI 不能更改添加到 SharePoint Foundation 中的自定义元素的用户界面文本【这才是本题涉及到的另一个层面: 自定义元素】,直到您提供这些元素的本地化资源。
在本地化解决方案时,您应考虑解决方案向用户显示的所有文本信息。 必须翻译信息性消息、错误消息和 UI 字符串,并将这些翻译放在资源文件中(即本题的.resx文件中)。资源文件中的每个字符串都有唯一的标识符。Visual Studio 中的功能资源始终命名为 Resources。 如果选择某种不是固定语言的语言,则会向资源文件名中添加区域性 ID。例如,如果添加固定语言(默认)功能资源文件,则该文件名为 Resources.resx。 如果通过选择日语的区域性(日本)来添加特定语言的功能资源,则文件名为 Resources.ja-JP.resx。 功能资源文件名是自动指派的,无法进行更改。
所以描述到此,本题的选项也就出来了,即通过multiple Resource (.resx) files来实现多语言支持。
再来看看其它选项:
选项A. a Feature event receiver 功能事件接收器, 用于指定在功能的生存期中作为四个关键事件的一部分调用的服务器端代码例程:安装、激活、停用和删除。开发人员创建一个功能,并确定它在激活时必须对对象模型进行某些调用,在停用时必须执行某些清理。开发人员还创建一个自定义功能事件接收器类,并在功能定义中包括对该类的引用。所以功能事件接收器是与多语言支持无关系的。
选项B. a site definition其定义就是:Contains a server-side collection of files that defines the structure of one or more site templates.也就是在服务器端包含了若干文件(这些文件就是ASPX页面文件以及XML文件)用于定义一个或多个站点模板的结构。很显然,是与站点定义相关,与多语言支持无关。
选项C. multiple Elements.xml files 包含功能元素声明的功能清单文件,与功能定义相关,与多语言实现无关。
所以本题目正确选项应该是D
参考:
http://msdn.microsoft.com/zh-cn/library/ff955227(v=office.14).aspx
http://blogs.msdn.com/b/joshuag/archive/2009/03/07/using-resource-files-resx-when-developing-sharepoint-solutions.aspx
Question 145
You are developing a custom Feature by using Microsoft Visual Studio 2010.
You need to ensure that when you deploy the Feature, a file named Form1.xsn is deployed to the Feature folder. You must achieve this goal by using the minimum amount of development effort.
What should you do?
A. Add a new module to the Visual Studio project.
B. Add a Feature receiver to the Visual Studio project.
C. Configure the Properties element in the Feature definition file.
D. Configure the Activation Dependencies element in the Feature definition file.
解析:
本题是想要在部署一个Feature时,需要包含一个指定的文件到此Feature的目录中。
功能(Feature)是Sharepoint的重要概念,功能降低了对网站进行简单自定义的复杂性,同时在将升级应用于部署时,功能相当可靠。借助功能,无需再复制大量代码即可更改简单功能。功能存储在前端 Web 服务器上的 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES 目录中。Feature 子文件夹包含 Feature.xml 文件,该文件用于定义功能的基本属性以及绑定到功能的元素
所以Feature.xml文件及其包含的元素及相关内容就是解决本题的基础,Feature 元素用于在 Feature.xml 文件中定义功能并指定支持功能的程序集、文件、依赖项或属性的位置。功能包括 Feature.xml 文件和用于描述各个元素的任意数量的文件。
模块(Module)是在网站中设置的文件实例的集合。若要将文件设置到 Microsoft SharePoint Foundation 网站中,必须在功能或网站定义中使用 Module 元素。通过 Module 元素可向 SharePoint Foundation 网站或文档库中添加一个或多个文件【此句就是本题要达到的目的,也即是选项A所描述的方式】。
Module 元素中包含 File 元素,后者用于定义要设置哪些文件,也可以包含对要添加的 Web 部件集的定义。如果通过 Module 元素将文件设置到子目录,SharePoint Foundation 会自动确保所创建的目录结构与您的文件相匹配。
功能激活依赖关系(Activation Dependencies)表达对两个功能之间相互关系的要求。您可以针对同一个范围的功能或更大范围内的功能表达激活依赖关系。当某个特定范围内的某个功能对于其他范围内的其他功能具有依赖关系时,就存在跨范围激活依赖关系。跨范围激活依赖关系的一个示例是一个网站范围的功能依赖于一个网站集范围的功能【即选项D描述的方式】。很显然,功能激活依赖关系并不是用来解决添加一个新的文件到某个Feature中的问题的。
选项C所提的Properties element是用来描述相关Feature的属性的。与添加外部文件资源无关。
至于选项B, Feature receiver 是用来指定在功能的生存期中作为四个关键事件的一部分调用的服务器端代码例程:安装、激活、停用和删除。你当然可以在此处对外部文件资源做添加处理。但通过复杂的代码编写来实现本题目的显然不符合本题的尽量简单的操作要求。
所以本题目正确选项应该是A
参考:
http://msdn.microsoft.com/en-us/library/ms462994.aspx
http://msdn.microsoft.com/en-us/library/ms441170.aspx
Question 146
You need to add a new field to a provisioned content type.
You must propagate the field to child lists and child content types.
What should you use?
A. <AddContentTypeField>
B. <ApplyElementManifests>
C. <FieldRefs>
D. <MapFile>
解析:
本题要求添加一个新的字段(Field)到某个已经有的内容类型中,并要把此变动传播到其子列表和子内容类型中去。
表面上看这是一道关于内容类型实现的题目,但实质上却是一个Feature升级(或功能版本控制)的题目。
SharePoint 2010 中的功能版本控制支持提供许多升级功能时可使用的功能。例如,可使用 SPFeature.Version 属性来确定服务器场上部署的功能版本,因而确定必须升级的功能。 您还可以定义 SPFeatureDependency.MinimumVersion 属性的值以处理功能依赖项。例如,可使用 MinimumVersion 属性来确保激活依赖功能的特定版本。可在功能的每个新版本中添加或删除功能依赖项。
SharePoint 2010 功能框架还提高了对象模型级别,从而更轻松地支持功能版本控制。您可以使用 QueryFeatures 方法来检索功能列表,而且可以同时指定功能版本以及某功能是否需要升级。
我们在 Feature.xml 文件中定义升级操作。SPFeatureReceiver 类包含一个 FeatureUpgrading 方法,您可使用该方法来定义升级期间执行的操作。当功能的 Feature.xml 文件包含一个或多个 <CustomUpgradeAction> 标记时,功能升级期间将调用此方法。
AddContentTypeField 升级操作可用来定义现有内容类型的其他字段。它还提供将这些更改向下推入子实例的选项,这通常是首选行为。最初将一个内容类型部署到网站集时,将在网站集级别创建该内容类型的定义。如果该内容类型在任何子网站或列表中使用,则将创建该内容类型的子实例。若要确保更新特定内容类型的每个实例,必须将 PushDown 属性设置为 true,如以下示例所示。
<Feature xmlns="http://schemas.microsoft.com/sharepoint/"> <UpgradeActions> <VersionRange EndVersion ="2.0.0.0"> <AddContentTypeField ContentTypeId="0x0101002b0e208ace0a4b7e83e706b19f32cab9" FieldId="{ccbcd479-94c9-4f3a-95c4-58897da434fe}" PushDown="True"/> </VersionRange> </UpgradeActions> </Feature>
【所以这正是本题需要的答案,即选项A】
ApplyFeatureManifests 升级操作可用来将新项目应用到 SharePoint 2010 网站,而无需重新激活功能。正如您可将新元素添加到任何新的 SharePoint elements.xml 文件中一样,您可指示 SharePoint 将特定元素文件中的内容应用到激活了给定功能的网站。
如果要升级现有功能,且该功能的 FeatureActivating 事件接收器执行您不希望再次对已部署功能的网站执行的操作,则可以使用此升级操作。以下示例演示如何在 Feature.xml 文件中包含此升级操作。
<Feature xmlns="http://schemas.microsoft.com/sharepoint/"> <UpgradeActions> <VersionRange EndVersion ="2.0.0.0"> <ApplyElementManifests> <ElementManifest Location="AdditionalV2Fields\Elements.xml"/> </ApplyElementManifests> </VersionRange> </UpgradeActions> </Feature>
【这正是选项B的描述】
至于选项C.D 均与Feature的版本控制无关。
选项C. <FieldRefs> 用于指定要在此内容类型中引用的列。
ID: 可选属性,类型为 Text。指定标识字段的 GUID
Name: 可选属性,类型为 Text。此属性提供将引用的字段的内部名称
选项D. <MapFile>允许您将未自定义的文件映射到前端 Web 服务器上的其他位置。
所以本题目正确选项应该是A
参考:
http://msdn.microsoft.com/en-us/library/ff595314.aspx
http://msdn.microsoft.com/zh-cn/library/ee537575(v=office.14).aspx