I couldn't recreate the problem using the steps you outlined (although I don't use Powershell) - but looking at the function in question (ICSharpCode.SharpDevelop.Project.ProjectBrowserControl.FindDeepestOpenNodeForPath) I think I can see the problem...
if (fileName.StartsWith(solution.Directory)) {
relativePath = fileName.Replace(solution.Directory, "");
}
There's no test around here to check that solution.Directory is not an empty string. An empty string would get past the StartsWith test (I've checked this), and would cause the exception described in the post.
Perhaps this should be:
if (fileName.StartsWith(solution.Directory) && (solution.Directory != "")) {
relativePath = fileName.Replace(solution.Directory, "");
}
There are a couple of examples like this in that particular function.
mjmilan