Readme for Microsoft Visual Studio 2008 SDK 1.1

This readme provides information about what is new in Visual Studio 2008 SDK 1.1 and what has been updated since earlier releases.

1.               New or Updated in the Visual Studio 2008 SDK

Visual Studio 2008 SDK 1.1 lets customers work with Visual Studio 2008 Service Pack 1 (SP1) extensibility features. 

1.1.  Updates Since the Visual Studio 2008 SDK 1.0 Release

·         Significant size reduction for Visual Studio Shell redistributable packages. The Visual Studio Shell Isolated and Visual Studio Shell Integrated redistributables are now approximately 150 megabytes smaller. The redistributables no longer carry the full .NET Framework 3.5 payload. However, they contain a bootstrapper that automatically downloads the .NET Framework 3.5 runtime if it is not installed on the target computer.

·         Support for progress feedback in a chained installation. The Visual Studio Shell Isolated and Visual Studio Shell Integrated redistributables can now pass installation progress back to the chaining process. This lets developers display accurate progress in their setup programs.

·         Visual Studio Shell development now supports normal user. Developing and deploying a Visual Studio Shell application no longer requires the developer to be an administrator on a Windows XP computer or to have elevated privileges on a Windows Vista computer.

·         DSL Print Preview. The ability to preview a DSL before printing has been added to the DSL designer.

·         New XML Tree Editor sample. The SQL Server team has provided a new XML Tree Editor sample.  The earlier sample has been removed.

·         New TFS Samples.  Two new TFS samples have been added.

o   VSExtensibilitySample

This new TFS sample provides an example of creating a Visual Studio add-in that interacts with the Version Control user interface of Team Explorer.  The sample comes with a detailed Word doc that provides insight into the requirements of such an add-in.

o   RichClientCustomControl

This new TFS sample provides an example of creating Work Item Tracking custom controls that work within Team Explorer.  The sample comes with a detailed Word doc that provides insight into the requirements of custom controls as well as a separate document that describes how to write custom controls that can be used within the Team Server Web Access environment .

 

·         Updated Shell documentation. Documentation about the Shell has been added.

2.               Deploying the Visual Studio SP1 Shell and Prerequisite Checking

Successful deployment of the Visual Studio SP1 Integrated Shell or Isolated Shell on a customer computer requires that all instances of Visual Studio on the computer have been updated to SP1.

Also, the SP1 Integrated Shell and Isolated Shell cannot be installed if the computer has earlier versions of the Integrated Shell, or Isolated Shell.

To provide a better chaining experience, Visual Studio 2008 SDK 1.1 contains a ShellInstallChecker.exe file.  This file performs the prerequisite checks and returns a value to your installer.  If the returned value is 0 (zero), your installer can continue to chain in the Integrated Shell or Isolated Shell and your own product.  If any other value is returned, your customers will need to install Visual Studio 2008 SP1 or remove any incompatible products.

ShellInstallChecker.exe may return the following return codes:

Return Code

Description

0x0

All prerequisites are met and the SP1 Shell can be installed.

0x80040201

User must upgrade all non-Isolated Visual Studio instances to SP1. Uninstallation of SP1 Beta may be required if it is present.

0x80040202

User must upgrade all Isolated Visual Studio instances to SP1. All non-SP1 instances of the Isolated Shell must be uninstalled first.

0x80040203

Both prerequisite conditions failed. Visual Studio SP1 must be installed and any non-SP1 instances of the Isolated Shell must be uninstalled.

 

3.               Known Issues

3.1.    The Visual Studio 2008 SDK 1.1 can not be installed side by side with other Visual Studio 2008 SDK versions

All previous versions of the Visual Studio 2008 SDK must be uninstalled before installing the 1.1 version.  This includes the 1.0 and 1.1 Beta releases.

3.2.             The project name for a Shell project must have fewer than 32 characters

A Shell project that is created by using the Visual Studio SDK must have a project name that does not exceed 32 characters. Although this requirement is not enforced in the New Project wizard, a project that has a longer name will close without warning when it is started.

3.3. The localized Integrated Shell and Isolated Shell redistributable Setup will not install the Framework Language Pack if the .NET Framework is already installed on the computer.

If .NET Framework 3.5 is already installed, the Setup for the Integrated Shell and Isolated Shell will detect it and will not apply the language pack.  If the language pack is required, users can download it on the Microsoft Download Center Web site.

3.4. The blocking message from the Isolated Shell and Integrated Shell SKUs is incorrect when the Shell in installed in UI mode.

The Integrated Shell and Isolated Shell should only be installed silently, chained into the installation of the product that you are delivering.  However, if installation of the Integrated Shell or Isolated Shell is started without passing the silent switch, a message will appear if the original release version of the Integrated Shell is installed.

The message text is as follows:

            Another version of Microsoft Visual Studio 2008 has been detected on this system that must be updated to SP1.  Please update all Visual Studio 2008 installations to SP1 level, by visiting Microsoft Update.

The error message is incorrect.  The correct action is to uninstall the original-release Isolated Shell and then install the Integrated or Isolated Shell.  If you are only installing the Integrated Shell, you should also install the SP1 version of the Isolated Shell.

3.5. Non-ANSI characters should not be used in the name of an Integration Package

Do not use non-ANSI characters in the name of an integration package.  If a non-ANSI character is used, the project reference will appear as ____Package.cs in the solution explorer.  (The underscore replaces the non-ANSI character.)

3.6  Microsoft.VisualStudio.Shell.Interop.8.0.dll and Microsoft.VisualStudio.Shell.8.0.dll from the Visual Studio 2005 SDK requires needs to be updated

If you are installing the Visual Studio 2008 SDK on a computer that has the Visual Studio 2005 SDK installed, you should update the Microsoft.VisualStudio.Shell.Interop.8.0.dll and Microsoft.VisualStudio.Shell.8.0.dll in the VS2005 SDK.  Some changes were made to this file during the Visual Studio 2008 time frame and to benefit from these changes, you will have to manually update this file.  To do so, copy the Microsoft.VisualStudio.Shell.Interop.8.0.dll and Microsoft.VisualStudio.Shell.8.0.dll from:

\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Common\Assemblies\
and overwrite the copy under
\Program Files\Visual Studio 2005 SDK\2007.02\VisualStudioIntegration\Common\Assemblies\

If these assemblies are not updated, some warnings may be displayed when building packages that reference this dll.  They would look like: 

Reference to type 'Microsoft.VisualStudio.Shell.IOleMenuCommand' claims it is defined in ‘\Program Files\Visual Studio 2005 SDK\2007.02\VisualStudioIntegration\Common\Assemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dll', but it could not be found

3.7  Windows Installers (MSIs) that are produced by domain-specific language (DSL) Setup projects must be run from an elevated process in Windows Vista

A Windows Installer program that is produced by a DSL Setup project must be run from an administrator-elevated command prompt under Windows Vista, or as an administrator under Windows XP. If it is not, the installer will display a warning message and then terminate. Under Windows Vista, it is not possible to run the installer by double-clicking the installer and then elevating the installer program permissions. You can work around this by wrapping the installer program in your own setup program. The DSL will then be installed correctly when you run the setup as an administrator.

3.8  Issue with path editor in DSL Designer when editing Element Merge Directives

It is not possible to use the new path editor to edit link creation paths in element merge directives. If you do use the path editor, then you’ll get a validation error on the path. The workaround is to enter a correct path directly as text, which is still supported.

3.9  Event handling generation in the IronPython Sample

Because IronPython is a dynamic language, event handling generation is not implemented like it is in static languages such as C#. The primary problem is that the IronPython compiler does not produce strongly typed assemblies. Therefore, for WPF, static-language-like event handling creation cannot be illustrated at compile time. Instead, custom event handling is implemented by wiring the event handling code to the compiled XAML.

For the WPF designer to instantiate a custom EventBindingProvider, the type (for example, PythonEventBindingProvider) must be on a path in the registered .NET AssemblyFolders. As a post-build step, PythonProject.csproj registers its output folder as an AssemblyFolder to meet this requirement.

3.10  IronPython/WPF CodeDom registration issue

When you build an IronPython WPF application, you may receive the following error message: “Unknown build error, 'Object reference not set to an instance of an object'”. For XAML compilation to succeed, a valid CodeDomProvider for the language being compiled must be registered on the computer. Because this is a global machine configuration setting, the IronPython sample does not try to register the IronPython CodeDomProvider automatically. To register the IronPython CodeDomProvider manually and build IronPython/WPF projects by using Visual Studio or MSBuild, do the following things:

Open %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config in a text editor (such as Notepad).

To register the IronPython CodeDomProvider, under the root <configuration> node add the following items:
<system.codedom>
<compilers>
<compiler language="py;IronPython" extension=".py" type="IronPython.CodeDom.PythonProvider, IronPython, Version=1.1.0.0, Culture=neutral, PublicKeyToken=4afbdc4d950a9602" />
</compilers>
</system.codedom>

Close and save machine.config

3.11  Use of DSL Tools may require experimental hive reset

If you are not the user who installed the Visual Studio SDK, you will not have an experimental hive under HKCU and you will not be able to use the DSL Tools successfully until you create one. The designer creation wizard warns you about this when it unfolds a new solution. The workaround is to reset the experimental hive by using the command that is installed on the Start menu.

3.12  Error when new creating a new VS Shell project without Visual C++ installed

When creating a new VS Shell project, Visual C++ must be installed.  Without it on the machine, you will get an error at project creation.  To workaround this, launch Visual Studio from Add/Remove programs and add the Visual C++ feature.

3.13  Overriding the Invoke member of OleMenuCommand causes a crash

When inheriting from OleMenuCommand, overriding the wrong Invoke method will cause a crash.  If Invoke(object, IntPtr) is overridden, the crash will occur.  To work around this, override the Invoke(object, IntPtr, OLECMDEXECOPT) function since that is the one called by the current implementation of OleMenuCommandService.

3.14  Error in the Task List does not navigate to the right line of code.

When creating a custom CodeDom parser, double clicking on an error in the task list brings the customer one line too high in the code file.  This is a bug in the TaskProvider.Navigate function.  To work around this, you need to prevent the VSDesignSurface from accessing its TaskProvider. Follow these steps to fix this issue:

  1. Call GetService(typeof(IDesignerHost)) on the designer loader
  2. Call GetService(typeof(DesignSurface)) on the designer host

Once you have the design surface, follow the steps below and subscribe to the DesignSurface.Loaded event.  You will need to do tis once for each design surface that is created.

  1. Call the design surface's GetService method with typeof(IServiceContainer)
  2. On the service container that gets returned, call RemoveService(typeof(TaskProvider))

If you are converting from a Visual Studio 2005 extension to a Visual Studio 2008 extension, you may also need to use the fully qualified type name for the 9.0 TaskProvider.

The fully qualified name is

Microsoft.VisualStudio.Shell.TaskProvider, Microsoft.VisualStudio.Shell.9.0, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

 

The code will look like: 

System.Type providerTypeV9 = System.Type.GetType("Microsoft.VisualStudio.Shell.TaskProvider, Microsoft.VisualStudio.Shell.9.0, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");

if (providerTypeV9 != null)

{

    RemoveService(providerTypeV9);

}   

3.15 Experimental hive is only created for the user that installed the SDK

If another user installed the SDK, you will not have an Experiemental Hive available for development and testing purposes.  To generate an Experiemental Hive, launch the “Reset Experiemental Hive” short from the Visual Studio 2008 SDK start menu shortcut.

 

3.16 How to include additional files in your Visual Studio Shell application

 

If you build a shell application without a project system implementation, you can add still add files within this application to a solution by using the File/New File dialog Unfortunately, those files do not get persisted with your project and are lost when the solution is closed.

To have your additional files persisted, you need to add the files through the Project menu.  In this case, they are added as solution items to your project.  When you close and relaunch your solution, the files will still be there.

 

3.17 TypeConverters and TypeDescriptors are not picked up during the build process or during toolbox initialization.

When adding a custom TypeConverter or TypeDescriptor and then building the DSL, the TypeConvertor or TypeDescriptor is not picked up.  The workaround is to rebuild the solution with a clean build.

3.18 Visual Studio Managed Package Framework for Projects (MPFProj) is now a codeplex project.

The MPF Project Sources have been removed from the SDK.  The sources are now available online at http://codeplex.com/MPFProj as a shared source project.  The Visual Studio SDK will no longer be shipping the MPF Proj sources in the future as it is now a community project.

 

4.               Product Support

4.1.             Latest how-to information

For the latest information about new features, including Visual Studio Shell development, visit the Visual Studio Extensibility Developer Center Web site.

4.2.             Getting help

To get help from the community or the Visual Studio SDK product development teams, use the following MSDN forums: