<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Random ramblings about Technology : .NET</title><link>http://blogs.msdn.com/martijnh/archive/tags/.NET/default.aspx</link><description>Tags: .NET</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Office 2010 Development – Outlook main window ribbon ID</title><link>http://blogs.msdn.com/martijnh/archive/2009/09/01/office-2010-development-outlook-main-window-ribbon-id.aspx</link><pubDate>Tue, 01 Sep 2009 09:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9889771</guid><dc:creator>martijnh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/martijnh/comments/9889771.aspx</comments><wfw:commentRss>http://blogs.msdn.com/martijnh/commentrss.aspx?PostID=9889771</wfw:commentRss><description>&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT color=#000000 size=3 face=Calibri&gt;I’m currently writing an Outlook add-in and I’m looking into getting this compatible with both Office 2007 and Office 2010. One of the new features in Outlook 2010 is the main window Ribbon. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT color=#000000 size=3 face=Calibri&gt;Using VSTO, you can create your own Ribbon, which can be automatically merged with default Ribbons by setting the correct OfficeId property for your Ribbon. Office 2007 has the list of available OfficeId values available &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/redir.aspx?C=f3c986b3badc4ac3bb1025b97e021ab9&amp;amp;URL=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3ffamilyid%3d4329D9E9-4D11-46A5-898D-23E4F331E9AE%26displaylang%3den" mce_href="http://blogs.msdn.com/redir.aspx?C=f3c986b3badc4ac3bb1025b97e021ab9&amp;amp;URL=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3ffamilyid%3d4329D9E9-4D11-46A5-898D-23E4F331E9AE%26displaylang%3den"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;, but I has some trouble locating a list for the Office 2010 Technical Preview. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;After some trial and error, I figures out there’s an easy way to find out what the different IDs for a specific Ribbon and it’s tabs is. 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;Office 2010 let’s users customize the Ribbon from within Office.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;P&gt;&lt;FONT color=#000000 size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_001_2.png" mce_href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_001_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=outlook_2010_ribbon_001 border=0 alt=outlook_2010_ribbon_001 src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_001_thumb.png" width=719 height=502 mce_src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_001_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT color=#000000 size=3 face=Calibri&gt;Clicking ‘Customize the Ribbon’ brings up the customization dialog:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_002_2.png" mce_href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_002_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=outlook_2010_ribbon_002 border=0 alt=outlook_2010_ribbon_002 src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_002_thumb.png" width=732 height=599 mce_src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_002_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;On the right-hand side of the dialog, right-click the ‘RSS’ tab within the expanded ‘Home’ tab and choose ‘Rename’. Name it e.g. ‘testRSS’. After customizing, press OK on the dialog and re-open the customization dialog once more (if you don’t close and re-open the dialog, the following steps will not lead to the desired result).&amp;nbsp; 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;Now press the ‘Import/Export’ button and select ‘Export all Ribbon and Quick Access Toolbar customizations’. Save the file.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt; 
&lt;P&gt;&lt;FONT color=#000000 size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_003_2.png" mce_href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_003_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=outlook_2010_ribbon_003 border=0 alt=outlook_2010_ribbon_003 src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_003_thumb.png" width=732 height=541 mce_src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_003_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The exported Office UI file has a .exportedUI extension. Rename this to .xml and open up the file. You’ll see something like this:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:cmd&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt"&gt;app&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;MSOutlook&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt"&gt;dt&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;0&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt; /&amp;gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:customUI&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt"&gt;xmlns:mso&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;http://schemas.microsoft.com/office/2007/10/customui&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:ribbon&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:qat&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:tabs&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:tab&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt"&gt;idQ&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;mso:&lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;TabMail&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:group&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt"&gt;idQ&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;mso:GroupRss&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt"&gt;label&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;testRSS&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:tab&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:tabs&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:ribbon&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;mso:customUI&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT color=#000000&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Note the ‘TabMail’ ID. This is the current (it’s a technical preview, things will probably change in the future) identifier for the Ribbon Tab you’ve just modified.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-ansi-language: en" lang=EN&gt;&lt;FONT size=3&gt;OK, we’ve got the Tab OfficeID. However, for a Ribbon to show up, you also need to specify RibbonType property. Normally, using VSTO, you get a drop down with all possible values for this property within Visual Studio. However, the main window Ribbon in Outlook is new, so there’s no value for this Ribbon within the list. Luckily, you can also type in your own value. Now all that’s left is finding out the name of the main Ribbon and we’d be set.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;&lt;FONT size=3&gt;I looked around, but the value for the main Ribbon was a mystery to me. Finally, I decided Outlook probably had the string in memory during runtime, so I could use Process Explorer to find the correct value. As you probably know, Process Explorer has a tab called ‘strings’ on the properties dialog of a process. This tab enumerates all strings within the image of the process and lists them here. &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;A href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_004_2.png" mce_href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_004_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=outlook_2010_ribbon_004 border=0 alt=outlook_2010_ribbon_004 src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_004_thumb.png" width=530 height=614 mce_src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_004_thumb.png"&gt;&lt;/A&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;&lt;FONT size=3&gt;I searched for ‘Microsoft.Outlook.’ (all values in the regular drop down start with this) and found ‘Microsoft.Outlook.Explorer’. Searching further, the other values we all know and love came up. However, ‘Microsoft.Outlook.Explorer’ was the only truly new value.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_005_2.png" mce_href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_005_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=outlook_2010_ribbon_005 border=0 alt=outlook_2010_ribbon_005 src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_005_thumb.png" width=531 height=614 mce_src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_005_thumb.png"&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_006_2.png" mce_href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_006_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=outlook_2010_ribbon_006 border=0 alt=outlook_2010_ribbon_006 src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_006_thumb.png" width=531 height=615 mce_src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/Office2010DevelopmentOutlookmainwindowri_A679/outlook_2010_ribbon_006_thumb.png"&gt;&lt;/A&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3 face=Calibri&gt;I tried using this value for the RibbonType and low and behold, my add-in appeared on the ‘RSS’ tab of the main Ribbon.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3 face=Calibri&gt;&lt;FONT color=#ff0000&gt;&lt;STRONG&gt;Key take-away&lt;/STRONG&gt;&lt;/FONT&gt;: Using a RibbonType of ‘Microsoft.Outlook.Explorer’ and ‘TabMail’ as your ControlId, you can place your add-in on the main ribbon of the Outlook window.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;P mce_keep="true"&gt;UPDATE: in Visual Studio 2010 beta 2, you can just select the RibbonType mentioned ;-)&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Disclaimer: This has been tested on the Technical Preview of Office 2010. There are no guarantees whether these IDs will be stable as we move forward with the product.&lt;/STRONG&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9889771" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/martijnh/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/Outlook+2010/default.aspx">Outlook 2010</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/Technical+Preview/default.aspx">Technical Preview</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/Office+2010/default.aspx">Office 2010</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/Ribbon/default.aspx">Ribbon</category></item><item><title>Suppressing Personal Identifiable Information (PII) in WCF log files</title><link>http://blogs.msdn.com/martijnh/archive/2008/08/18/suppressing-personal-identifiable-information-pii-in-wcf-log-files.aspx</link><pubDate>Mon, 18 Aug 2008 23:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8877108</guid><dc:creator>martijnh</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/martijnh/comments/8877108.aspx</comments><wfw:commentRss>http://blogs.msdn.com/martijnh/commentrss.aspx?PostID=8877108</wfw:commentRss><description>&lt;P&gt;Given the vast amount of information transported between systems in today's enterprise environments, a lot of which is considered either private (addresses, social security numbers, credit card information, mortgage and pension plans, etc) or of high business value, information security is key.&lt;/P&gt;
&lt;P&gt;From the release of WCF, it has brought us tremendous flexibility and allowed development teams to be almost completely agnostic of the way information is transported between point A to point B, focusing on adding business value instead.&lt;/P&gt;
&lt;P&gt;Another great feature WCF brings us is runtime troubleshooting. In WCF, an administrator can simply enable &lt;A href="http://msdn.microsoft.com/en-us/library/ms731308.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms731308.aspx"&gt;logging&lt;/A&gt; to troubleshoot an environment which is in production.&lt;/P&gt;
&lt;P&gt;Although a great feature for troubleshooting, Personal Identifiable Information (PII) you care about deeply while on the wire (using transport and message-level security to protect it) is available in plain text if logging is turned on at the server side.&lt;/P&gt;
&lt;P&gt;WCF's logging features currently filter out specific PII by default (only if the message is not &lt;A href="http://msdn.microsoft.com/en-us/library/ms730318.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms730318.aspx"&gt;malformed&lt;/A&gt;). However, this functionality is not exposed to the developer.&lt;/P&gt;
&lt;P&gt;Consider the following scenario:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You want the administrator to be able to monitor messages for auditing, logging or troubleshooting purposes; 
&lt;LI&gt;certain information is considered PII and should not show up in the log files.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;You could write your own logging subsystem and hook it in to your services. This takes a lot of work, is error prone, needs custom maintenance, documentation, etc.&lt;/P&gt;
&lt;P&gt;My proposal for the scenario:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use a behavior which 
&lt;UL&gt;
&lt;LI&gt;introspects the published &lt;A href="http://msdn.microsoft.com/en-us/library/system.servicemodel.description.serviceendpoint.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.servicemodel.description.serviceendpoint.aspx"&gt;ServiceEndPoint&lt;/A&gt;s for published &lt;A href="http://msdn.microsoft.com/en-us/library/system.servicemodel.description.operationdescription.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.servicemodel.description.operationdescription.aspx"&gt;OperationDescription&lt;/A&gt;s and the used &lt;A href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx"&gt;DataContract&lt;/A&gt;s, 
&lt;LI&gt;finds public properties on the DataContract marked as PII; 
&lt;LI&gt;instructs the WCF logging runtime to ignore the contents of the specified message elements.&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;configure the behavior through code (this is not generally considered a best practice, but the security needs of the service outweighs the flexibility needs of configuration);&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Let's have a look at how the solution works:&lt;/P&gt;
&lt;P&gt;Take a DataContract, e.g. PurchaseOrder and apply an attribute (PII) on each property which represents PII.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_datacontract_2.png" mce_href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_datacontract_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=174 alt=wcf_pii_datacontract src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_datacontract_thumb.png" width=388 border=0 mce_src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_datacontract_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Next, add a PIIProtectionBehavior attribute to your service implementation class&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_protectionbehavior_attribute_2.png" mce_href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_protectionbehavior_attribute_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=107 alt=wcf_pii_protectionbehavior_attribute src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_protectionbehavior_attribute_thumb.png" width=613 border=0 mce_src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_protectionbehavior_attribute_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;You're done. The PIIProtectionBehavior attribute is also an &lt;A href="http://msdn.microsoft.com/en-us/library/system.servicemodel.description.iservicebehavior.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.servicemodel.description.iservicebehavior.aspx"&gt;IServiceBehavior&lt;/A&gt; implementation which performs the introspection on the EndPoints.&lt;/P&gt;
&lt;P&gt;The result when logging is turned on:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_messagelogging_2.png" mce_href="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_messagelogging_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=135 alt=wcf_pii_messagelogging src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_messagelogging_thumb.png" width=389 border=0 mce_src="http://blogs.msdn.com/blogfiles/martijnh/WindowsLiveWriter/SuppressingPersonalIdentifiableInformati_C46F/wcf_pii_messagelogging_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;As you can see, 'CreditCardnumber' is no longer logged, it just displays '&amp;lt;-- Removed --&amp;gt;' .&lt;/P&gt;
&lt;P&gt;I've attached the sample code, hope it's useful!&lt;/P&gt;
&lt;P&gt;Ofcourse, the normal disclaimers apply, the accompanied sample is for educational purposes only, it has not gone through rigorous testing, might contain bugs due to limited testing (me ;-)), etc. Please see the sourcecode for further remarks.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8877108" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/martijnh/attachment/8877108.ashx" length="15673" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/martijnh/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/PII/default.aspx">PII</category></item><item><title>Fixing exception messages on the .NET Compact Framework 3.5</title><link>http://blogs.msdn.com/martijnh/archive/2008/01/03/fixing-exception-messages-on-the-net-compact-framework-3-5.aspx</link><pubDate>Thu, 03 Jan 2008 19:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6969321</guid><dc:creator>martijnh</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/martijnh/comments/6969321.aspx</comments><wfw:commentRss>http://blogs.msdn.com/martijnh/commentrss.aspx?PostID=6969321</wfw:commentRss><description>&lt;P&gt;FWIW: I&amp;nbsp;recently ran into trouble while developing for the .NET Compact Framework, v3.5. Upon all exceptions, the framework would tell me: &lt;/P&gt;
&lt;P&gt;"&lt;EM&gt;An error message is available for this exception but cannot be displayed because these messages are optional and are not currently installed on this device. Please install ‘NETCFv35.Messages.EN.wm.cab’ for Windows Mobile 5.0 and above or&amp;nbsp; ‘NETCFv35.Messages.EN.cab’ for other platforms. Restart the application to see the message.&lt;/EM&gt;"&lt;/P&gt;
&lt;P&gt;Interpreting the message as 'I have to run the NETCFv35.Messages.EN.wm.cab (I'm developing an application for WM6) on my device', I copied the file from C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\Diagnostics onto my mobile device and ran the installation.&lt;/P&gt;
&lt;P&gt;To no avail, nothing changed and I was stuck. After installing the '&lt;A class="" href="http://www.microsoft.com/Downloads/thankyou.aspx?familyId=c8174c14-a27d-4148-bf01-86c2e0953eab&amp;amp;displayLang=en" mce_href="http://www.microsoft.com/Downloads/thankyou.aspx?familyId=c8174c14-a27d-4148-bf01-86c2e0953eab&amp;amp;displayLang=en"&gt;Power Toys for .NET Compact Framework 3.5&lt;/A&gt;', however, I configured logging using the '.NETCF Logging Configuration' application and found the following error for the &lt;EM&gt;loader&lt;/EM&gt; log:&lt;/P&gt;
&lt;P&gt;'Attempt to load [\Program Files\SomeApp\System.SR.dll] has failed (err 0x80001000).'&lt;/P&gt;
&lt;P&gt;Renaming the file 'SYCCFA~1.001', included in the aforementioned CAB file into System.SR.dll and adding it as a reference in my application proved to fix the issue. I now had readable exception messages.&lt;/P&gt;
&lt;P&gt;Just jotting this down&amp;nbsp;as there's nothing to be found on the web regarding the issue that I could find. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6969321" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/martijnh/archive/tags/Resources/default.aspx">Resources</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/Logging/default.aspx">Logging</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/NET/default.aspx">NET</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/.NET+Compact+Framework+3.5/default.aspx">.NET Compact Framework 3.5</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/3.5/default.aspx">3.5</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/Compact/default.aspx">Compact</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/Framework/default.aspx">Framework</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/Exceptions/default.aspx">Exceptions</category><category domain="http://blogs.msdn.com/martijnh/archive/tags/.NET/default.aspx">.NET</category></item></channel></rss>