Question 142
You have a Feature that contains an image named ImageV1.png.
You plan to create a new version of the Feature.
You need to ensure that when the Feature is upgraded, the image is renamed as ImageV2.png. You must achieve this goal by using the minimum amount of development effort.
Which element should you configure in the Feature definition file?
A. <ApplyElementManifests>
B. <CustomUpgradeAction>
C. <MapFile>
D. <VersionRange>html
解析:
本題是你升級了一個Feature,你要保證升級後的Feature中引用的一個圖片資源從ImageV1.png指向了ImageV2.png,前提是工做量最少。
先來快速瞭解一下Sharepoint的功能升級的相關知識點:
在 Microsoft SharePoint Foundation 中,每一個功能都具備一個在與其對應的 Feature.xml 文件中指定的版本號。在某個特定範圍內激活一個功能時,會建立一個與該功能的版本關聯的功能實例。利用 SharePoint Foundation 中的功能版本控制,可輕鬆跟蹤功能及其關聯實例。以後,當您部署新版本的功能時,SharePoint Foundation 檢測到關聯的功能也須要進行升級,由於功能實例的版本號小於當前的 Feature.xml 文件中指定的新版本號。
最佳作法是,決不將 FEATURES 文件夾中的功能文件與解決方案部署文件或解決方案升級文件分開放置,由於功能升級是一個高級部署選項,它不會在部署期間驗證功能 XML。
在運行功能升級時,還會根據新 Feature.xml 文件中指定的升級操做對須要升級的功能實例進行升級。SharePoint Foundation 使用新的 QueryFeatures 方法(可應用於頂級對象,如 SPWebApplication 和 SPSite),基於功能實例的版本號來肯定須要升級的功能實例。新 Feature.xml 文件中有一個部分,可用於指定將特定的功能實例從早期版本升級到最新版本所需的升級操做。升級基礎結構會查詢須要升級的功能實例集,而後升級其中的每一個功能實例。此活動會涉及聲明性升級操做和自定義升級代碼。在 SharePoint Foundation 中,將跟蹤每一個功能實例的版本號。
下面重點了解與本題相關的Feature.xml:
Feature.xml 文件中新增的 <UpgradeActions> 節指定可應用於指定功能的升級操做。
能夠將 <UpgradeActions> 節放置在 Feature.xml 文件的開頭或末尾,使其位於 <Feature> 元素的內容中。經過該節,您能夠爲不一樣的升級範圍指定升級操做,而且能夠包含應用於指定範圍的升級操做列表。升級定義始終將功能升級到 <Feature> 元素中聲明的版本。
如下代碼顯示可在 Feature.xml 文件中定義的示例 <UpgradeActions> 節。前端
<UpgradeActions ReceiverAssembly="MyFeatureReceiver, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2f2197d99d6e2871" ReceiverClass="FeatureReceiver.TestFeatureReceiver"> <CustomUpgradeAction Name="DeleteField"> <Parameters> <Parameter Name="FieldName">Address3 </Parameter> </Parameters> </CustomUpgradeAction> <VersionRange BeginVersion="2.0.0.0" EndVersion="5.0.0.0"> <!-- Here you specify other upgrade actions to apply to Feature instances whose versions are within the range 2.0.0.0 to 5.0.0.0 --> </VersionRange> </UpgradeActions>
<UpgradeActions> 節指定如何升級功能實例。可經過直接修改 Feature.xml 文件以聲明方式完成常見升級方案 。
<UpgradeActions> 元素能夠包含下列子元素:
• <CustomUpgradeAction> :容許您在升級功能實例時執行自定義代碼。若是在升級操做序列中指定了操做,則 Microsoft SharePoint Foundation 會按照聲明順序與其餘升級操做同步調用 FeatureUpgrading(SPFeatureReceiverProperties, String, IDictionary<String, String>) 方法。【即本題選項B提到的元素】
• <VersionRange> :指定已指定的升級操做應用於的版本範圍。【即本題選項D提到的元素】
• <ApplyElementManifests> :向現有功能添加新元素。升級功能時,設置在指定的元素清單中引用的全部非聲明性元素。 【即本題選項A提到的元素】
• <AddContentTypeField>: 向現有的已設置內容類型添加新字段。將更改從網站內容類型傳播到網站中的全部子列表和內容類型。例如:
<AddContentTypeField
ContentTypeId="0x010100A6F9CE1AFE2A48f0A3E6CB5BB770B0F7"
FieldId="{B250DCFD-9310-4e2d-85F2-BE2DA37A57D2}"
PushDown="TRUE" />
在大多數狀況下,ContentTypeId 和 FieldId 屬性的值在定義內容類型和字段的 Elements.xml 文件中指定。
• <MapFile> : 容許您將未自定義的文件映射到前端 Web 服務器上的其餘位置。可使用 FromPath 和 ToPath 屬性重命名功能中的文件(例如,<MapFile FromPath=」oldname.gif」 ToPath=」newname.gif」 />),還可使用 MapFile 移動文件。在這種狀況下,FromPath 和 ToPath 屬性指定相對於 TEMPLATE 目錄的路徑。例如,若是名爲「MyFeature」的功能在「Gifs」目錄中安裝了 .gif 文件(如 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES\MyFeature\Gifs\basketball.gif),而且您要在版本 2 中將目錄從「Gifs」重命名爲「Images」,則<MapFile FromPath=」Gifs\ball.gif」 ToPath=」Images\basketball.gif」 /> 可用於移動這些文件。【即本題選項C提到的元素】
爲了幫助您處理已進行版本控制的功能依賴關係,<ActivationDependency> 元素增長了 MinimumVersion 屬性,該屬性在功能所依賴的另外一功能的版本號必須大於或等於 MinimumVersion 時使用。web
直接分析各選項:
選項A. <ApplyElementManifests> :用於向現有功能添加新元素,本題並非添加新元素,而是修改一個已經存在的舊元素。
選項B. <CustomUpgradeAction>容許您在升級功能實例時執行自定義代碼。本元素顯然與引用圖片資源的位置無關。
選項C. <MapFile> 容許您將未自定義的文件映射到前端 Web 服務器上的其餘位置,根據上述的具體描述,正是本題須要的。
選項D. <VersionRange>指定已指定的升級操做應用於的版本範圍。也明顯與本題要求無關。
因此本題目正確選項應該是C
參考:
http://msdn.microsoft.com/en-us/library/ff595311.aspx
http://msdn.microsoft.com/zh-cn/library/ee535723(v=office.14).aspx數據庫
Question 143
You have a Feature named Feature1.
You plan to create a new version of Feature1 that will upgrade the existing version of Feature1.
You need to ensure that when Feature1 is upgraded, additional configuration data is added to the property bag of the site.
What should you do?
A. Add a <CustomUpgradeAction> element and increase the Version number of the Feature.
B. Add a <CustomUpgradeAction> element and increase the UIVersion number of the Feature.
C. Add an <ActivationDependencies> element and increase the Version number of the Feature.
D. Add an <ActivationDependencies> element and increase the UIVersion number of the Feature.
解析:
本題仍是關於功能升級的,要求在Feature1升級時,完成額外的動做:添加附加的配置數據到網站的屬性包(Property bag)中。
先來看看本題提到的屬性包是怎麼回事:事實上,在SharePoint上安裝的Feature都會有一個屬性包,該屬性包是一個名稱/值的集合。不管是Feature仍是Feature定義都經過Properties屬性暴露它們的屬性包,而SPFeaturePropertyCollection對象則表示屬性集合。在Sharepoint中,咱們能夠經過元素清單來定義文件、文件夾、列表項或網站的屬性包(也即:屬性包是分層次的)。它能夠用來存儲咱們的配置信息。
再來看看< ActivationDependencies >元素, 指定當前功能的激活所依賴的功能列表。功能激活依賴關係表達對兩個功能之間相互關係的要求。您能夠針對同一個範圍的功能或更大範圍內的功能表達激活依賴關係。當某個特定範圍內的某個功能對於其餘範圍內的其餘功能具備依賴關係時,就存在跨範圍激活依賴關係。
再來看看UIVersion是怎麼,首先要知道Sharepoint升級的UI控制問題: 默認狀況下,在將 Windows SharePoint Services 3.0 網站或 Office SharePoint Server 2007 網站升級到 SharePoint 2010 時,最初將經過使用 Windows SharePoint Services 3.0 的版本 3 用戶界面來呈現其頁面。可是,將用戶界面遷移到版本 4 的時間將由網站管理員經過使用瀏覽器中的標準命令逐個網站進行肯定。經過利用某些信息,SharePoint 2010 可在各版本之間來回切換網站的用戶界面。每一個 SharePoint 網站均由一個 SPWeb 對象表示。從 SharePoint 2010 開始,每一個 SPWeb 對象都帶有一個在內容數據庫中跟蹤的新 UIVersion 屬性。UIVersion 屬性是基於整數的,它可包含的有效值爲 3 或 4。當某個網站的 UIVersion 屬性值爲 3 時,SharePoint 2010 將使用版本 3 來呈現該網站的頁面。當某個網站的 UIVersion 屬性值爲 4 時,SharePoint 2010 將使用版本 4 來呈現該網站的頁面。因此,此屬性是用來切換不一樣版本的Sharepoint界面的。
至於<CustomUpgradeAction>,容許您在升級功能實例時執行自定義代碼。若是在升級操做序列中指定了操做,則 Microsoft SharePoint Foundation 會按照聲明順序與其餘升級操做同步調用 FeatureUpgrading(SPFeatureReceiverProperties, String, IDictionary<String, String>) 方法。
分析到此處,本題的答案也就出來了:經過<CustomUpgradeAction>它容許您在升級功能實例時執行自定義代碼。你能夠在代碼中完成額外的操做,固然也包括本題想要添加附加的配置數據到網站的屬性包(Property bag)中這樣的任務。 瀏覽器
因此本題目正確選項應該是A
參考:服務器
http://msdn.microsoft.com/zh-cn/library/ff647766.aspx
http://msdn.microsoft.com/en-us/library/ee537575.aspxapp