Visual Studio ate my setup project.

Well Ok, technically it didn’t “eat” the setup project just manage to nibble at the dependencies.. (Of course this happens when you’re on a deadline racing against the clock trying to get something finished and built so that it can go off to a customer who is about to fly off to install it.)

So the problem is as follows you’ve got a Setup Project and when you build it you get an error similar to the one below, possible more than one error message (I had 5).

The dependencies for the object ‘policy_8_0_microsoft_vc80_atl_x86.msm’ cannot be determined.

After lots of Googling I could only find the following thread at MSDN. It’s not exactly the same problem as I was having (same error message though), as there’s appears to be caused when Visual Source Safe gets in the way or if you’ve got a database project, but the fix that I found in that forum does work. (It’s on Page 3 of the thread.) I’ve pasted it below in case it dissappears.

Here is one work around to solve this bug:

  1. Mark the assemblies that fail to update their references.
  2. Close VS2005.
  3. Open the setup project file (.vdproj file) with a text editor.
  4. Locate the “File” section.
  5. Locate and remove the assembly references from step 1.
    • These references start with a guid reference like :”{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_0FE46745DE13D177CF253E35E33B9B04″, and end with something like this:”IsolateTo” = “8:”
  6. Save the file
  7. Open VS2005 and rebuild.

Sample file (red lines should be removed)

“File”
{

“{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0C0430E641F4445D9516B2CD0DF6D372”
{
“SourcePath” = “8:..\\Setup\\CabArc.Exe”
“TargetName” = “8:CabArc.Exe”
“Tag” = “8:”
“Folder” = “8:_2F74E0FB53014DC3862F7F3DF19CC5F5”
“Condition” = “8:SETUP_CLIENT=1”
“Transitive” = “11:FALSE”
“Vital” = “11:TRUE”
“ReadOnly” = “11:FALSE”
“Hidden” = “11:FALSE”
“System” = “11:FALSE”
“Permanent” = “11:FALSE”
“SharedLegacy” = “11:FALSE”
“PackageAs” = “3:1”
“Register” = “3:1”
“Exclude” = “11:FALSE”
“IsDependency” = “11:FALSE”
“IsolateTo” = “8:”
}
“{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_0FE46745DE13D177CF253E35E33B9B04”
{
“AssemblyRegister” = “3:1”
“AssemblyIsInGAC” = “11:FALSE”
“AssemblyAsmDisplayName” = “8:Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL”
“ScatterAssemblies”
{
“_0FE46745DE13D177CF253E35E33B9B04”
{
“Name” = “8:Microsoft.Practices.EnterpriseLibrary.Logging.dll”
“Attributes” = “3:512”
}
}
“SourcePath” = “8:Microsoft.Practices.EnterpriseLibrary.Logging.dll”
“TargetName” = “8:”
“Tag” = “8:”
“Folder” = “8:_E58FBD674227478D90C4056AD8242BCF”
“Condition” = “8:”
“Transitive” = “11:FALSE”
“Vital” = “11:TRUE”
“ReadOnly” = “11:FALSE”
“Hidden” = “11:FALSE”
“System” = “11:FALSE”
“Permanent” = “11:FALSE”
“SharedLegacy” = “11:FALSE”
“PackageAs” = “3:1”
“Register” = “3:1”
“Exclude” = “11:FALSE”
“IsDependency” = “11:TRUE”
“IsolateTo” = “8:”
}
}

PS: Make a backup of the project file before making any changes.

Chris Mylonas