Microsoft KB Archive/164684

From BetaArchive Wiki
Knowledge Base


Article ID: 164684

Article Last Modified on 7/16/2004



APPLIES TO

  • Microsoft Visual SourceSafe 5.0 Standard Edition
  • Microsoft Visual Basic 5.0 Control Creation Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.2 Enterprise Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a



This article was previously published under Q164684

SYMPTOMS

When you add a project or a file to Visual SourceSafe from one of the applications that Visual SourceSafe integrates with, the following error message appears:

File <filename> could not be mapped to the SourceSafe project <projectname>

CAUSE

The Visual SourceSafe project structure does not match the directory structure on the drive that contains the application project.

RESOLUTION

Create a Visual SourceSafe project structure that mirrors your application project structure.

STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article. This problem was corrected in Visual SourceSafe version 6.0 for Windows.

MORE INFORMATION

To distinguish between the Visual SourceSafe project (for example, $/develop/newproj) and the "project" concept in an integrated application (that is, .pjx in Visual FoxPro, .mdp in Visual C++, .vbp in Visual Basic), the "project concept" is referred to as the "application project" in this article. The directory that contains the application project file (that is, .pjx, .mdp, .vbp, and so forth) is the "home" directory.

When you add an application project to Visual SourceSafe, you are prompted to specify the Visual SourceSafe project where you want to store your files. This is referred to as the "parent" project. The working folder of the parent project is set to the home directory. When you add a file from the application project to Visual SourceSafe, the integration looks at the relative path of that file to the home directory and attempts to add it to a Visual SourceSafe project that has the same relative path to the parent project.

To illustrate this, assume that you have the following directory structure:

   C:
      \Develop
          \Greatapp
               Greatproj.vbp (file)
               \Forms
                  Greatform.frm

           \Badapp
                Module3.bas  (file)
                

The application project Greatproj contains the files Greatform.frm and Module3.bas. You add Greatproj to Visual SourceSafe, in a project named $/Apps/Greatapp.

In this example, the home directory is C:\Develop\Greatapp and the parent project is $/Apps/Greatapp.

Consider how the Visual SourceSafe integration attempts to store the three files.

Greatproj.vbp is stored in $/Apps/Greatapp.

Greatform.frm is stored in $/Apps/Greatapp/Forms.

NOTE: If the /Forms subproject does not exist, it should be created programmatically by the integration when you first add Greatproj.vbp to Visual SourceSafe. However, if project security is enabled, you will receive the "File or Project not Found" error due to a bug in the integration. Either disable project security prior to adding the application project under Visual SourceSafe, or create the subproject manually and add the missing files. Module3.bas - The integration looks for a sibling project to $/Apps/Greatapp named $/Apps/Badapp. The relative path from Greatproj.vbp to Module3.bas in the directory structure is "up one level then down one level into badapp." The integration attempts to map this relative path accordingly. If $/Apps/Badapps does not exist, the error message appears. This is correct behavior because the integration only creates subprojects of the parent project.

Take into account that subprojects of the parent are only created by the integration when the application project is first added to Visual SourceSafe. For example, after adding Greatproj to Visual SourceSafe you create a new subdirectory (C:\develop\greatapp\modules), save Module4.bas in that subdirectory, and add Module4.bas to the application project. When you attempt to add Module4.bas to Visual SourceSafe, the error message appears because the integration is looking for the following subproject:

   $/Apps/Greatapp/Modules.
                

Again the relative path from Greatproj.vbp to Module4.bas is "down one level into modules", and fails if there is no matching subproject.

Keywords: kbprb KB164684