I have been testing using remote server projects and one thing I noticed was that remote projects differ from local project in several ways.

1) Remote projects do not (for what may seem obvious reasons) allow you to debug using the built-in server. Presumably this is because local files appear to simply be cached and the project is getting it's actual file list from the remote server.

2) Subversion status icons do not show up for remote projects. This could be due to the same issue as #1 above.

I figured out a way to get both of these working within the framework you have already set up. With minor changes you could probably get them both to work out-of-the-box.

First I did the following:

  • Create a remote project
  • Check it into subversion
  • Check out the remote project to a directory under the remote solution directory
  • Open the remote solution in notepad and change the project directory to that of the checked-out project.
  • Close notepad and open the solution inside Visual Studio.

If you follow these steps, you will see the same view of the remote project that was visible prior, but the subversion status icons will be visible. I tested this and the remote files still get updated every time I save it locally.

In addition to this, I was able to create a local project file using the same files as in the above project, add it to the same solution and all of a sudden I was able to debug the same exact files that were on the remote server in the built-in debugger.

I don't know if this is useful to anyone but it seems that, with only minor modifications, it should be possible to allow both local and remote debugging of remote server projects, and allow the projects to show svn status icons.

To summarize:

  • You can enable subversion status icons for remote server projects by checking the remote project out locally and pointing the remote solution to the local files rather than the vsphp_webcache dir under the temp dir.
  • You can debug remote server projects using the built-in debugger by doing the above step, creating a php project for the local version of the files and adding it to the remote solution (not required but it makes sense for ease of access).

juanc says:

Very interesting... thanks for sharing.