Tag Archives: VS

VS2010: Project not selected to build for this solution configuration

Along with everyone we are moving towards 64-bit platforms. After adding solution platform x64 under Visual Studio 2010 Configuration Manager, everything seemed ok.

When building, all builds was successful except x64 Release. Here is an output:
1>------ Skipped Build: Project: abc, Configuration: Release x64 ------
1>Project not selected to build for this solution configuration
2>------ Skipped Build: Project: def, Configuration: Release x64 ------
2>Project not selected to build for this solution configuration
...
========== Build: 1 succeeded or up-to-date, 0 failed, 27 skipped ==========

After some digging I found that solution file (.sln) is damaged. Some forum posts suggest to recreate solution and add all project again.

Then if you compare old (broken) .sln file and new .sln file, you notice that old file is missing some ‘Build.0’ entries for x64 platform:
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|Win32.ActiveCfg = Debug|x86
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|Win32.Build.0 = Debug|x86
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|x64.ActiveCfg = Debug|x64
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|Win32.ActiveCfg = Release|x86
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|Win32.Build.0 = Release|x86
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|x64.ActiveCfg = Release|x64

To fix, add the missing entries:
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|Win32.ActiveCfg = Debug|x86
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|Win32.Build.0 = Debug|x86
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|x64.ActiveCfg = Debug|x64
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|x64.Build.0 = Debug|x64
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|Win32.ActiveCfg = Release|x86
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|Win32.Build.0 = Release|x86
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|x64.ActiveCfg = Release|x64
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|x64.Build.0 = Release|x64

If you have MS Setup Projects (MSI), then you will have 8 entries without final platform specifier:
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|Win32.ActiveCfg = Debug
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|Win32.Build.0 = Debug
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|x64.ActiveCfg = Debug
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Debug|x64.Build.0 = Debug
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|Win32.ActiveCfg = Release
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|Win32.Build.0 = Release
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|x64.ActiveCfg = Release
{062214D2-863B-4F1F-9631-23D9DF8D181D}.Release|x64.Build.0 = Release

If you have relatively small number of project I suggest you to go with recreating solution path, because it is very easy to make mistake by editing .sln in text editor.

Unable to connect to the Microsoft Visual Studio 2010 Remote Debugging Monitor in service mode

Rarely I need to use Visual Studio Remote Debugger to debug Native application. It always big pain to configure everything correctly. But today I needed to run Remote Debugger as service, so I can debug another service, when no any user is logged onto computer.

First strange thing I noticed, that I am able to run ‘Visual Studio 2010 Remote Debugger’ from start menu and it shows ‘Msvsmon started a new server named username@TESTSRV’. It should not happen because I already have debugger service running. I double checked that under Control Panel – Services.

At that point I thought that it is somehow possible to start multiple debugger services simultaneously using the same name. I tried to run another instance of Visual Studio 2010 Remote Debugger, and of course it failed with error:
Visual Studio Remote Debugging Monitor

An instance of msvsmon is already running on this machine under your user account. If you like to run multiple instances of msvsmon, you must use a different server name. Please enter a new server name.

Server name: [username@TESTSRV]
[OK] [Exit]

So it is not possible to run two servers with the same name and I have the Application and the Service running at the same time. So it must be a different name for the service then, but I can not find a way to get actual Server name for service.

Desperately trying to connect to Debugger service, I begun to play with Attach to process dialog. I always connected to remote machines using username@machine syntax. I tried to connect using machine name, username, IP address, but nothing worked. It sometimes displayed the following error:
---------------------------
Microsoft Visual Studio
---------------------------
Unable to connect to the Microsoft Visual Studio Remote Debugging Monitor named 'username@TESTSRV'. There is no server by the specified name running on the remote computer.
---------------------------
OK Help
---------------------------

Sometimes dialog window just closed without showing anything. And I got it. When it closes without en error there should be connection to remote machine going on, but why does dialog close? Instead of closing I tried to click on ‘Show processes form all users’ and it worked. It also worked if I clicked Refresh. To me it seemed a counter intuitive at that point. But the main pitfall was the Server name.

When you run Remote Debugger as Application the Server name is username@computername:

When you run Remote Debugger as Service the Server name is computername:

Also, note that I am using Workgroup configuration. I do not have a Domain.

Also, under Workgroup I can not run service under LocalSystem account. I am getting Kerberos authentication error:
---------------------------
Microsoft Visual Studio
---------------------------
Unable to connect to the Microsoft Visual Studio Remote Debugging Monitor named 'TESTSRV'. The Visual Studio Remote Debugger on the target computer cannot connect back to this computer. Kerberos authentication failed. Please see Help for assistance.
---------------------------
OK Help
---------------------------

More info: Visual Studio Debugger – Error: Kerberos Authentication Failed

So I am running service under administrator account with firewall disabled. (do not disable firewall if you are not in secure LAN)

I hope my experience with Remote Debugging will help someone to solve similar issues.

Visual C++ 2010 fails to embed manifest on FAT32

Today I tried to figure out why one of my Visual Studio Projects failed to embed a Manifest. I had Generate Manifest and Embed Manifest enabled under Linker / Manifest tool, but manifest was not embedded.

Long story short, after 2 hours of configuring, rebuilding, creating, deleting, I had the following state:
– Move project to C: drive, and Linker embeds manifest as expected.
– Move project to D: drive, and manifest is not embedded into exe file.
– Move project to D: drive, and add a dummy resource, and Linker embeds manifest as expected.
– Bonus to all this, Release version worked like a charm, but Debug version did not.

Looking at disk properties revealed, that C: is NTFS drive, but D: is my old FAT32 drive. Then I recalled, that there was one strange option in Visual Studio 2008 Manifest Tool, called ‘Use FAT32 Work-around’. From MSDN documentation:
FAT and FAT32 file systems have up to a two second latency between the time that a file is changed and the time that the file's time stamp is updated. This latency prevents the build process from determining whether or not relevant files are up-to-date.
Yes introduces a two second delay to allow the manifest tool (Mt.exe) to properly embed the manifest on FAT and FAT32 file systems. If you are building a project on a FAT or FAT32 file system, select Yes.

Use FAT32 Work-around in Visual Studio 2008:
Use FAT32 Work-around

The problem is, that if you open the same properties in Visual Studio 2010, then there is no such option anymore. Option ‘Use FAT32 Work-around’ is removed from Visual Studio 2010. It means that Visual Studio 2010 works only on NTFS. This is not mentioned in System Requirements, but who is using FAT32 anyway?

So currently my workaround is to convert my old drive to NTFS.