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:
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.
The new Visual Studio 2010 help system is missing index and full TOC. Transition from old good HTML help to new Web Browser Based Approach thing is painful, but the inability to search using index made this thing unusable.
Luckily, I am not alone, and people are talking about these shortcomings everywhere – Microsoft Connect, Microsoft Forums, etc.
Currently there are three options:
All three options are currently free.
Visual Studio Installer (MSI) warning:
WARNING: Could not find prerequisite '.NET Framework 2.0 (x86)' in path 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\'
WARNING: Could not find prerequisite '.NET Framework 2.0 (x86)' in path 'C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\'
The result is that automatic downloading of prerequisites does not work any more. This is caused by fact, that Visual Studio 2010 does not include:
- .NET Framework 2.0
- .NET Framework 3.0
- .NET Framework 3.5 w/o SP1
There is discussion about this issue in VS2010 forum – Deployment project breaks on VS 2010 upgrade.
The suggested workaround is to use .NET Framework 3.5 SP1 Client Profile Prerequisite form available prerequisites under Setup project properties. This is some lightweight version of Microsoft .NET Framework.
If for some reason you do not want to use v3.5 framework, like, you do not want to force clients to download extra megabytes, you can copy needed Prerequisites from your Visual Studio 2008 folder.
"C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\"
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\"
under x64 bit Windows, or if you have 32-bit Windows version, use the following path:
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\"
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\"
- DotNetFX is .NET Framework 2.0
- DotNetFX30 is .NET Framework 3.0
- DotNetFX35 is .NET Framework 3.5 w/o SP1
P.S. Do not forget a proper testing!