Tuesday, November 02, 2010

Microsoft Tech Days in Halifax!

Microsoft TechDays is in Halifax November 2-3 at the World Trade Centre.

This is a great local event and I’m happy to see that Microsoft decided to come back to Halifax after the sold out show last year.

From the Tech Days session page: “If you're a technical professional in Canada, review from the six tracks offered through the two day Tech•Days experience in each venue. Select from over 50 sessions to build your schedule.”

Last night, I went to the speaker dinner and met a bunch of the people who have flown in to present on various topics.

I highly recommend this event. Check it out!

 

image

Thursday, October 28, 2010

Rally to Restore Sanity This Weekend

This weekend, comedian Jon Stewart, from The Daily Show, will be leading a rally in Washington, DC called Rally to Restore Sanity.

Some opponents have made strong negative statements about this event, but I have to say that it makes perfect sense to me. From the perspective of someone outside the system, it seems quite clear that a portion of the media and some politicians in the U.S.A. have convinced a lot of people that they cannot have a rational conversation with someone who doesn’t share their ideology. This creates a toxic environment where people cannot reach reasonable compromises, and it also paralyzes the government because politicians are more loyal to the concept of fighting the other party than they are to their personal values.

So, why would anyone criticize a rally designed to promote rational conversation? Why wouldn’t someone support a forum for people who aren’t extremists? Perhaps because they’re part of the problem.

Jon Stewart Daily show RallyToRestoreSanity_TDS_RallyPoster Geeklit blog

Friday, October 01, 2010

Microsoft SharePoint MVP 2010

I’m happy to say that I’ve received a Microsoft Most Valuable Professional (MVP) Award for SharePoint.

What is that you ask? According to Microsoft:

“This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in SharePoint Services technical communities during the past year.”

In practical terms, this means helping with community-focused resources such as contributing to the SharePoint newsgroups, speaking at conferences, writing about SharePoint and contributing to CodePlex (an open source site used by the SharePoint community).

Getting into the MVP program has been a long story for me. Back in 2001, NCompass Resolution became Microsoft Content Management Server (MCMS) and I had started what became the MCMS FAQ. The FAQ was a searchable CHM containing hundreds of questions and answers. I created it partly for the consulting team, but it was mainly targeted at the community at large. When NCompass Resolution became MCMS, I wondered if I could be an MVP. However (and I’m not complaining), I was hired by Microsoft and employees aren’t eligible for the MVP program.

In 2004, the MCMS team was folded into the SharePoint team, and I started getting involved with the SharePoint community. But I took a break to do some writing, so it really wasn’t until 2008 that I was deeply involved with SharePoint community activity.

Thank you to everyone who helped along the way. My employer, Metalogix Software, has been tremendously supportive and I wouldn’t have received this award without their help.

MVPverbose

Wednesday, September 29, 2010

SharePoint Taxonomy Series Featured in SPTechReport

My blog series on SharePoint taxonomy (SharePoint Enterprise Metadata Management) has been featured in this week’s SharePoint Tech Report newsletter.

This e-mail newsletter is free and you can sign up quickly by visiting the SD Times website.

SPTechReportBanner

Friday, September 10, 2010

SharePoint Incompatible Web Part markup detected

I was working on my Game of Life SharePoint 2010 taxonomy sample, when I suddenly started to get this error message when I tried to add my web part to a page:

“Incompatible Web Part markup detected. Use *.dwp Web Part XML instead of *.webpart Web Part XML.”

image

The problem is that the .NET framework web part and SharePoint web parts are not the same thing. If you’re deriving your web part from System.Web.UI.WebControls.WebParts.WebPart, then you are using the .NET web part. But if you’re using Microsoft.SharePoint.WebPartPages.WebPart, then it’s a SharePoint web part.

As far as I can tell, you can actually use either one inside SharePoint, but there are differences in the way that you code them. If you’re using a SharePoint web part, then you should have a .dwp file in your feature. If you’re using the .NET class, then it should be .webpart. The error about the web part markup occurs when you try to use the wrong one. The .dwp and .webpart files are both XML, but they use a different schema. So if you change from one to the other, you can’t just rename the file, you have to re-write it.

I don’t know why my project suddenly decided that it didn’t want to work. As far as I can remember, all I did was change the assembly version number, but anyway…

To resolve the issue, I had to ensure that I was consistent across my project. I want to use the .NET webpart class, so this is what the beginning of my webpart.cs file looks like. I’ve used the long format for the WebPart class to make things crystal clear:

using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

//Added references
using System.Xml.Serialization;

namespace GameOfLifeWebPartProject.GameOfLifeWebPart
{   
[ToolboxItemAttribute(false)]  [DefaultProperty("Text"), ToolboxData("<{0}:GameOfLifeWebPart  runat=server></{0}:GameOfLifeWebPart>"), XmlRoot(Namespace = "GameOfLifeWebPart")]
public class GameOfLifeWebPart :
System.Web.UI.WebControls.WebParts.WebPart
    {

Now that I’ve clarified which type of web part I’m using, any custom properties that I add have to be in the correct format for that type of web part. If you add custom properties using the other format, the project may compile and deploy, but the properties won’t appear in the web part property pane.

// Custom web part property for the term group name
private string m_termStoreGroupName = "Game of Life";
[System.Web.UI.WebControls.WebParts.WebBrowsable(true),
System.Web.UI.WebControls.WebParts.WebDisplayName("Term Store Group Name"),
System.Web.UI.WebControls.WebParts.WebDescription("The name of the term store group you'll use."),
System.Web.UI.WebControls.WebParts.Personalizable(
System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared),
System.ComponentModel.Category("Game of Life Settings"),
System.ComponentModel.DefaultValue("Game of Life")]
public string TermStoreGroupName
{
     get { return m_termStoreGroupName; }
     set { m_termStoreGroupName = value; }
}

This is what the same property would have looked like if I was using .dwp and the SharePoint web part class:

private string m_termStoreGroupName = "Game of Life";
[Category("Game of Life Settings")]
[WebPartStorage(Storage.Personal)]
[FriendlyNameAttribute("Term Store Group Name")]
[Browsable(true)]
[Description("The name of the m_group you'll use in your term store.")]
[DisplayName("Term Store Group Name")]
[XmlElement(ElementName = "TermStoreGroupName")]
public string TermStoreGroupName
{
     get { return m_termStoreGroupName; }
     set { m_termStoreGroupName = value; }
}

If you decide to change from .webpart to .dwp or vice versa, you’ll need to add the new file to your project and also update the feature package. If you don’t add the new file to the feature package, your web part won’t appear in the web part gallery because it requires that XML file.

Thursday, September 09, 2010

SharePoint Game of Life Web Part on CodePlex

Earlier this year, I presented a session at SharePoint Saturday New York on the new SharePoint 2010 taxonomy features (Enterprise Metadata Management). At the time, I offered to provide the source code for the visual web part sample I used in the developer portion of the talk.

The sample is a simple SharePoint 2010 visual web part based on John Conway’s Game of Life cellular automaton. I wrote about the SharePoint Game of Life web part previously on this blog. If you’re interested in SharePoint taxonomy, you can also check out my blog series on Enterprise Metadata Management (EMM).

The idea is that each term in the SharePoint taxonomy term store represents an organism. As you run through each generation, terms are added and deleted based on the parameters of the simulation.

image

It took a few months, but I’ve cleaned it up, added better error handling and uploaded the code to the SharePoint 2010 Game of Life Web Part project on CodePlex. This project is written in C#. It requires Visual Studio 2010 and SharePoint 2010 Server.

The Long Tale: This SharePoint 2010 taxonomy sample is actually a port of an old-school ASP code sample that I wrote in 1999 for the NCompass Resolution API. Resolution went on to become Microsoft Content Management Server (MCMS).

image

Wednesday, September 01, 2010

Visual Studio Designer View Doesn’t Work After Adding a Table

I’ve been working to clean up my SharePoint Game of Life web part so that I can give it out publicly. I found recently that when I added an ASP.NET  Table control to an ASCX page, I could no longer select the individual controls on the page. This is annoying since I you can’t quickly get to their property grids.

In the Visual Studio designer view, I could only select the Table control that now encompassed all of the other controls.  If I clicked on anything, it just selected the large table. The other ways of selecting nested controls that I would use with WinForms don't work either.

image                         - after adding the table, only the whole table could be selected

After messing about, I found the solution. Since I don't actually need the main table to be a Table control, all I had to do was change it to a simple HTML table. So instead of <asp:Table><asp:TableRow><asp:TableCell>…. I used: <table><tr><td>…

Now the designer is usable again!

image                                                  - after removing the ASP Table control, controls are accessible again

Monday, August 30, 2010

SharePoint Web Part Property Default Value

I’ve been working on the final touches of my SharePoint 2010 taxonomy ‘Game of Life’ web part. I showed this web part during my SharePoint Enterprise Metadata Management (EMM or taxonomy) talk at SharePoint Saturday in New York earlier this year.

One of the final changes is taking the settings out of the ASPX page (and also removing the hard-coded ones), and moving them into the web part properties pane. This isn’t difficult to do, but I ran into a minor snag when I tried to set the default value of the properties. For example, most people playing with this control will be using the default term store name, so I may as well have that name, "Managed Metadata Service", already in the property box.

You can see these properties working in the image below (bottom, right).

WebPartProperties

At first, I thought the format was pretty obvious. I specified the default value like this: [DefaultValue("Managed Metadata Service")]. However, that didn’t work—the default property value was blank. I also tried adding a const string variable and using that to set the value: private const string m_TermStoreDefault = "Managed Metadata Service"; and then [DefaultValue(c_TermStoreDefault)]. But that didn’t work either—I still had an empty default value.

The solution was to set the member variable for the property to the default value. So instead of private string m_termStoreName; I used private string m_termStoreName = "Managed Metadata Service";. This sets the member variable that’s used for the property get method to the default value I want.

Note that if you don’t specify where you want your custom properties stored (see “XmlRoot(Namespace” below), you will see an error when you try to edit a property. Something like “Cannot save the property settings for this Web Part.”

For clarity, here’s what the file looks like (I’ve cut out some stuff that isn’t useful to this post) :

using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

//Added references
using Microsoft.SharePoint.WebPartPages;
using System.Xml.Serialization;

namespace GameOfLifeWebPartProject.GameOfLifeWebPart
{
    [ToolboxItemAttribute(false)]
    [DefaultProperty("Text"), ToolboxData("<{0}:GameOfLifeWebPart  runat=server></{0}:GameOfLifeWebPart>"), XmlRoot(Namespace = "GameOfLifeWebPart")]
   
public class GameOfLifeWebPart : WebPart
    {
        // Visual Studio might automatically update this path when you change the Visual Web Part project item.
        private const string _ascxPath = @"~/_CONTROLTEMPLATES/GameOfLifeWebPartProject/GameOfLifeWebPart/GameOfLifeWebPartUserControl.ascx";

        protected override void CreateChildControls()
        {
            Control control = Page.LoadControl(_ascxPath);
            Controls.Add(control);
        }

        // Set the default value
       private string m_termStoreName = "Managed Metadata Service";
        // Create a custom category in the property sheet
        [Category("Game of Life Settings")]
        // Property is available in both Personalization and Customization mode
        [WebPartStorage(Storage.Personal)]
        // The caption that appears in the property sheet.
        [FriendlyNameAttribute("Term Store Name")]
        [Browsable(true)]
        [Description("The name of the term store you'll use.")]
        [DisplayName("Term Store Name")]
        [XmlElement(ElementName = "TermStoreName")]
        public string TermStoreName
        {
            get { return m_termStoreName; }
            set { m_termStoreName = value; }
        }
   …
    }
}

Friday, August 27, 2010

Web Part Error -- The type is not registered as safe

I’ve been working on a SharePoint 2010 web part project and when I pressed F5 to debug, I ran across the error: “A Web Part or Web Form Control on this Page cannot be displayed or imported. The type is not registered as safe.”

webparterrorondebug

This can be caused by innocently renaming your assembly/namespaces/classes. The first thing to check is: SharePointProjectItem.spdata. Your web part should be properly referenced in the SafeControl section.

<ProjectItemFile Source="VisualWebPart1UserControl.ascx" Target="CONTROLTEMPLATES\VisualWebPartProject2\VisualWebPart1\" Type="TemplateFile" />
  </Files>
  <SafeControls>
    <SafeControl Name="SafeControlEntry1" Assembly="$SharePoint.Project.AssemblyFullName$" Namespace="VisualWebPartProject2.VisualWebPart1" TypeName="*" IsSafe="true" IsSafeAgainstScript="false" />
  </SafeControls>
</ProjectItem>

You can also get this error if you've added a web part to a page (e.g., debugging) and then the web part has been removed from the gallery.

If that doesn't resolve it, check your other files.

e.g. VisualWebPart1.webpart file:
<type name="VisualWebPartProject2.VisualWebPart1.VisualWebPart1, $SharePoint.Project.AssemblyFullName$" />
 
VisualWebPart1.ascx.cs namespace name
namespace VisualWebPartProject2.VisualWebPart1
{
    public partial class VisualWebPart1UserControl : UserControl
    {
   
VisualWebPart1.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VisualWebPart1UserControl.ascx.cs" Inherits="VisualWebPartProject2.VisualWebPart1.VisualWebPart1UserControl" %>

VisualWebPart1.cs
namespace VisualWebPartProject2.VisualWebPart1
{
    [ToolboxItemAttribute(false)]
    public class VisualWebPart1 : WebPart
   
Elements.xml
<File Path="VisualWebPart1\VisualWebPart1.webpart" Url="VisualWebPartProject2_VisualWebPart1.webpart" Type="GhostableInLibrary" >
 
Assemblyinfo.cs
[assembly: AssemblyTitle("VisualWebPartProject2")]
...
[assembly: AssemblyProduct("VisualWebPartProject2")]

Windows Live Writer 2011 Beta

Last year, I posted a message about Windows Live Writer for blog Authoring and I mentioned that I had heard a rumour that Live Writer would soon have the Office ribbon UI. Well the future is now.

The Windows Live Writer 2011 Beta is out and it does indeed have the ribbon interface.

WindowsLiveWriterBeta2011

I’ve only written one post so far (this one), but I really am happy to see that ribbon. I have to say though that a couple of things seem to be missing in this Beta. For example, pasting in a picture from the clipboard isn’t working for me (I use that all the time), so I had to use the ribbon Insert option. Also, I don’t see the Format Painter. I dig the Format Painter.

You can read my original Live Writer post if you’re curious why I choose to use this great app. But the short list is: access to multiple blog accounts, easy editing and image handling with my FTP server and having the power of a rich-client.

Friday, August 20, 2010

Outlook 2010 Quick Steps

So I finally got around to adding some quick steps in Outlook 2010 and I’m glad that I took the time to discover the value of this feature. I work at Metalogix Software and anyone who works in a technology company will get a lot of e-mail. I previously posted about how I use Outlook Quick Parts, Outlook Safe Senders and how I manage my inbox (Don’t be an E-Mail Hoarder).

Quick steps allow you to create an action that contains a number of other actions. For example, you might want to move a message to a particular folder and mark it as done at the same time. The quick steps saves you the time of having to complete each action individually. In this way, you could say that Quick Steps are like macros.

I didn’t jump right on this feature because I didn’t initially appreciate that it could save me time. However, when playing around with it, I discovered that I can associate a keyboard shortcut with a Quick Step. Now, that’s interesting to me. Perhaps I only want to perform one action, such as moving messages to a folder, but now I can do it with a keyboard shortcut. That will save me time.

To create a Quick Step, you can go up to the ribbon, or you can right-click a message and find the option in the context menu.

OutlookQuickSteps1

With the context menu open, choose Create New to bring up the Edit Quick Step dialog. In this window, you can give your new Quick Step a name and choose the actions that you’d like to apply. Some of the options include moving, copying, deleting, marking as read or unread, setting the message importance, flagging the message, etc.

image 

Once you have your Quick Step defined, you can go to the bottom of the dialog and choose a shortcut key and you can even add a tooltip to remind you how this Quick Step is meant to be used.

OutlookQuickSteps3

That’s it! You’re all sort to start streamlining your Outlook mail management.

Wednesday, August 18, 2010

SharePoint Web Services in Visual Studio 2010

When you want to add a reference to your SharePoint 2010 web services, you might be confused by the “Add Service Reference” option in Visual Studio 2010. If you choose this option, everything will seem to generate fine, but you won’t end up with what you want.

To use the SharePoint 2010 (or MOSS) web services in VS 2010, you should choose Add Service Reference, but don’t enter the URL into the address box. Instead, click the Advanced button at the bottom.

image 

Once you get to the Service Reference Settings dialog, click Add Web Reference at the bottom. This will open the familiar Web Reference dialog that you would have used in Visual Studio 2005.

image

With the good ‘ol Add Web Reference dialog open, you can feel free to enter the URL of your web services (e.g., http://servername/_vti_bin/Webs.asmx). Now you can use the same code you had previously used to leverage SharePoint web services in your applications.

image

Update: If you right-click on Web References, and choose Add Web Reference you can get to this option right away. However, you may need to create one the other way to get the Web Reference folder to appear.

If you do try to add a service reference to the SharePoint web services (e.g., http://servername/_vti_adm/Webs.asmx), you may see this error message:

There was an error downloading 'http://servername/_vti_adm/Webs.asmx'.
The request failed with the error message:
<html><head>
<title>The file you are attempting to save or retrieve has been blocked from this Web site by the server administrators.<nativehr>0x800401e6</nativehr>

WPF DockPanel and StatusBar Gotcha

I’ve only recently started to work with Windows Presentation Foundation (WPF) on an actual project. WPF is the new Microsoft technology for building powerful user interfaces.

I ran into this simple gotcha with the DockPanel control and thought I’d share. The issue was that my status bar would not dock properly at the bottom of the UI.

I wanted to add a toolbar, then some controls underneath that which are contained in a StackPanel control, and then the StatusBar control at the bottom. From an XML/HTML perspective, the following code made sense to me.

<DockPanel HorizontalAlignment="Stretch" Width="Auto" Height="Auto">
     <ToolBarTray HorizontalAlignment="Stretch" DockPanel.Dock="Top">
        <ToolBar Name="toolBarMain" Height="28" HorizontalAlignment="Stretch">
            …
        </ToolBar>
    </ToolBarTray>

    <StackPanel DockPanel.Dock="Top">
        <StackPanel Orientation="Horizontal">
            …
        </StackPanel>
    </StackPanel>
    <TabControl DockPanel.Dock="Left" TabStripPlacement="Bottom">
        …   
          </TabControl>

     <StatusBar DockPanel.Dock="Bottom" HorizontalAlignment="Stretch">
        <StatusBarItem>
            <TextBlock Text="Status..."/>
        </StatusBarItem>
    </StatusBar>
</DockPanel>

However, this didn’t work. The other controls messed up the StatusBar even though it was the only one set to dock to the bottom. The solution was to move the StatusBar all the way to the beginning of the DockPanel control. The reason this was happening makes sense to me now (for example, you might want the control on the left to go all the way to the bottom), but I assumed that if controls weren’t nested, then they wouldn’t affect one another.

<DockPanel HorizontalAlignment="Stretch" Width="Auto" Height="Auto">
    <StatusBar DockPanel.Dock="Bottom" HorizontalAlignment="Stretch">
        <StatusBarItem>
            <TextBlock Text="Status..."/>
        </StatusBarItem>
    </StatusBar>

    <ToolBarTray HorizontalAlignment="Stretch" DockPanel.Dock="Top">
        <ToolBar Name="toolBarMain" Height="28" HorizontalAlignment="Stretch”>
            …
        </ToolBar>
    </ToolBarTray>

    <StackPanel DockPanel.Dock="Top">
        <StackPanel Orientation="Horizontal">
            …
        </StackPanel>
    </StackPanel>
    <TabControl DockPanel.Dock="Left" TabStripPlacement="Bottom">
        …   
          </TabControl>
</DockPanel>

Monday, August 02, 2010

Adding Senders to Outlook 2010 Safe Sender List

To save time having to choose to download pictures in Microsoft Outlook messages from outside the Metalogix GAL, I often add addresses to the Outlook safe senders list. Unfortunately, I have found that this isn’t as straightforward as it used to be in Outlook 2007.

The Outlook 2007 method for adding a sender to the Outlook 2010 safe list does not work for me. Despite the follow note in the Outlook documentation, I do not get the option when I right-click a message or go up to the Junk E-mail option in the ribbon.

“To quickly add a sender, domain name, or mailing list name to the Safe Senders or Safe Recipients Lists, right-click the message you consider safe, and then on the shortcut menu, point to Junk E-mail, and then click Add Sender to Safe Senders List, Add Sender's Domain (@example.com) to Safe Senders List, or Add Recipient to Safe Recipients List.”

It appears that the option has simply been removed from the context menu and wasn’t added to the ribbon. You might be tricked into thinking that “Never Block Sender” achieves the same effect, but I’ve tried it and that option does not add the sender to the safe senders list.

Outlook 2010 Safe Sender

The longer method (from the same documentation page) will work, but it’s cumbersome:

  1. On the Home tab of the ribbon, click the dropdown arrow next to Junk
  2. Select Junk Email Options...
  3. Click the Safe Senders or Safe Recipients tab.
  4. Click Add.
  5. In the Enter an e-mail address or Internet domain name to be added to the list box, enter the name or address you want added, and then click OK.
  6. Repeat steps 4 and 5 for each name or address that you want to add.

In previous versions of Outlook:

  1. On the Tools menu, click Options.
  2. On the Preferences tab, under E-mail, click Junk E-mail.
  3. Click the Safe Senders or Safe Recipients tab.
  4. Click Add.
  5. In the Enter an e-mail address or Internet domain name to be added to the list box, enter the name or address you want added, and then click OK.
  6. Repeat steps 4 and 5 for each name or address that you want to add.

These is however, a faster way to do it. If the message contains images—which is my main use case anyway—you can use the “Click here to download pictures” bar to quickly add the sender to the safe list. To do this, right-click on the bar at the top of the message preview and choose “Add Sender to Safe Senders List.” Quick and easy. Now you don’t need to choose to download images from senders you trust.

Add Outlook sender to safe senders list

Update: As you can see in the comments below (thanks Drake!), there is also a way to automatically add people you mail to the Safe Senders list:

“From the Junk E-mail Options window, navigate to the Safe Senders tab and check the Automatically add people I e-mail to the Safe Senders List option. You can also Add E-mail from addresses or domain names on your Safe Senders List and this will never be treated as junk e-mail.” - From www.oracle-forums.com

Friday, July 30, 2010

SharePoint Saturday New York This Weekend

Tomorrow is another SharePoint Saturday New York (#spsnyc) community conference. I’ll be flying out today to attend the sold out event. 300 attendees are expected and they’ll be treated to 35 sessions.

Chris Geier from Metalogix will be speaking about Information Management in SharePoint 2010.

website: http://www.sharepointsaturday.org/ny

Thursday, July 29, 2010

New SharePoint 2010 Book is Here!

I stopped by FedEx yesterday to pick up my hot off the presses copies of  my new book, How to Do Everything: SharePoint 2010. I suspect that it’s already on its way to the Amazon warehouse and will be released there soon.

This is my first end-user book and I’m very happy with it. McGraw-Hill did a great job from start to finish—quality editing and excellent presentation. So if you’re interested in SharePoint, but don’t know where to start, here’s an option for you.

Thanks to SharePoint MVP, Sean Wallbridge (from itgroove) for his technical editing skills and Arpan Shah, (Director, Microsoft) for writing the foreword. Also, big thanks to Roger Stewart from McGraw-Hill for bringing the whole project together. And, of course, my agent Neil Salkind for putting me in front of great publishers.

This book is part of a series called “How to Do Everything,” and I really hope that I don’t have to deal with, “you didn’t cover everything” comments. :)  This is SharePoint after all—covering every aspect would take a substantial series of books.

Topics in this SharePoint 2010 end-user book include:

  • SharePoint Concepts
  • The SharePoint UI
  • Document Management
  • Collaboration
  • Taxonomy and Social Tagging
  • Navigation
  • My Sites
  • Web Parts
  • Customization
  • SharePoint Client Applications

Thursday, July 15, 2010

WPC 2010 Wrap-Up

Another Microsoft Worldwide Partner Conference (WPC) has come and gone. As usual, Metalogix had a great show. We were fortunate to see a number of our international partners and maybe start some new relationships as well.

Metalogix WPC booth

- The WPC 2010 Metalogix booth

At this year’s show, the emphasis was clearly on the cloud and Metalogix was thrilled to be there to talk about our migration to BPOS and from BPOS to SharePoint 2010.

WPC2010_IMG_0703
- Freeman crates behind the curtain at #WPC10

Thursday, June 17, 2010

SharePoint 2010 Phantom Web Part Error

I've been playing around with SharePoint 2010 visual web parts and I happened to find that one of my old—and deleted—sample parts was still (unsuccessfully) being loaded on the server. The web part did not exist on the page (at least it didn’t appear anywhere in published or edit more) and it had been deleted from the web part galleries.

I stumbled across the error when I enabled the SharePoint  2010 developer dashboard on the home page of my server. The web part errors appeared in the “Asserts and Critical Events” section of the dashboard.

To get rid of the error, I put the page in edit mode and removed all the white space (just a line break or two from the main content area on the page. (I also added and removed a different web part, but I’m not sure that it had any effect.) Now I don’t get the error… crazy.

image                               - The developer dashboard no longer shows any critical errors

Here’s the error from the SharePoint developer dashboard:

Web Parts 18 7935 http://sp2010/SitePages/Home.aspx - An unexpected error has been encountered in this Web Part.  Error: A Web Part or Web Form Control on this Page cannot be displayed or imported. The type VisualWebPartProject2.VisualWebPart1.VisualWebPart1, VisualWebPartProject2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=50d4a10608bc4e38 could not be found or it is not registered as safe., Source: [UnsafeControlException: A Web Part or Web Form Control on this Page cannot be displayed or imported. The type VisualWebPartProject2.VisualWebPart1.VisualWebPart1, VisualWebPartProject2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=50d4a10608bc4e38 could not be found or it is not registered as safe.]<br/>&#160;   at Microsoft.SharePoint.ApplicationRuntime.SafeControls.GetTypeFromGuid(Guid guid, Guid solutionId, String assemblyFullName, String typeFullName, Boolean throwIfNotFound)
<br/>&#160;   at Microsoft.SharePoint.WebPartPages.SPWebPartManager.CreateWebPartsFromRowSetData(Boolean onlyInitializeClosedWebParts)

Tuesday, June 15, 2010

Halifax SharePint Tomorrow

sparepintlargeblack

There will be a SharePint tomorrow in Halifax, Canada!

Wednesday, June 16th at Durty Nelly's Irish Pub. 6pm

hugsharepoint_logo

For future events, follow @HUGSharePoint on Twitter and check out http://www.hugsharepoint.org.

Thursday, June 10, 2010

Windows Live Mesh Beta - Free

A while ago, I wrote a post about SyncToy. It’s a free utility that let’s you sync folders across computers. Well, now I have something even better to blog about. I switched over to Windows Live Mesh (Beta) a few months ago and I’m really happy with it.

image - Use the online interface to add devices to Live Mesh

Live Mesh allows you to quickly and easily share folders amongst machines that have network access. All you have to do it install a small app and then create folders. In the Beta, you get 5GB for free and both 32bit and 64bit machines are supported. I was particularly happy to find that Windows Server 2008 R2 64bit works because I’m a SharePoint guy and that’s what I run at Metalogix.

Once you have set it up, you can rest easy as the folders are synchronized in the background. For example, I just went to the Microsoft TechEd conference and I knew getting on the plane that my laptop was in sync with my shared folder at work. In a sense, Live Mesh is like a USB key that you don’t need to carry with you.

image - A Live Mesh folder showing two devices are synchronized

Also note that Live Mesh offers a remote desktop option that allows you to remote to the computers that are being used. This adds tremendous value since most networks use DHCP and you can't be sure which IP to connect to unless you install something like DynDNS. In other words, connecting to work might be easy, but connecting to home can be more of a challenge; Live Mesh resolves that challenge.