Search

Changes to a Manifest file in a C++ project does not trigger a rebuild of the EXE or DLL by Martin Richter

Closed
as Fixed Help for as Fixed

1
0
Sign in
to vote
Type: Bug
ID: 654293
Opened: 3/29/2011 12:51:44 PM
Access Restriction: Public
0
Workaround(s)
0
User(s) can reproduce this bug
If you have a C++ project and add manifest file to the project with some special data.
If you change this manifest file, the target exx/dll isn't rebuild.
The change of the manifest is not detected by MSBuild

Even if I add the manifest file to the manifest project settings a change to that file doesn't cause a rebuild of the binary.
Details (expand)

Visual Studio/Silverlight/Tooling version

Visual Studio 2010 SP1

What category (if any) best represents this feedback?

Reliability

Steps to reproduce

1. Create a C++ project.
2. Create a manifest file with some addiotional dependencies or other entries (click once etc.)
3. Add the manifest file to the project.
4. Compile & Link
5. Change the manifest file.
6. Perform a Build
Nothing happens

Product Language

English

Operating System

Windows 7

Operating System Language

German

Actual results

Changes to the Manifest file are not detected and no Link or run of the manifest tool take place!

Expected results

Manifest should trigger a change to the binary via the Manifest tool.
File Attachments
File Name Submitted By Submitted On File Size  
TestManifest.zip 3/30/2011 14 KB
Sign in to post a comment.
Posted by Martin Richter on 4/7/2011 at 11:25 PM
This fix works in my test project.
Posted by Microsoft on 4/6/2011 at 1:52 PM
Hello Martin Richter,
Thanks for reporting the issue, I believe I have found a solution; you can modify the build system to see if it resolve your issue. Please the back up the file before modifying it. Open %Programfile%\msbuild\microsoft.cpp\v4.0\Microsoft.cppcommon.targets,
Look for the comment:
    <!-- If RC did produce an output, then force link to embed that manifest.
         This enforcement is required for projects residing on FAT32 drives. -->
Under it, add these lines:
    <PropertyGroup>
     <LinkSkippedExecution Condition="@(RCSourcesCompiled)!=''">false</LinkSkippedExecution>
    </PropertyGroup>

Next time you modify the manifest, this change will detect that RC generated a new output, thus won't skip the next link. Let me know if you need any additional help.

Thanks
Felix
Posted by Microsoft on 3/31/2011 at 5:48 AM
Thank you for submitting feedback on Visual Studio 2010 and .NET Framework. Your issue has been routed to the appropriate VS development team for review. We will contact you if we require any additional information.
Posted by Martin Richter on 3/30/2011 at 7:35 AM
You can not repro the bug? I have to laugh. This is the sandard message I retrieve on 50% of all bugs I report.

OK I just attached a project to this case:
1. Do a full build
2. Change the manifest file in any way. Just changethe comment orthe assembly name
3. Build it again.

You wil find that the EXE is not changed!
Posted by Microsoft on 3/30/2011 at 3:19 AM
Thank you for reporting this issue. Unfortunately, we are unable to reproduce the issue with the steps you provided.

Could you please provide us with a sample project zip?

It would be greatly appreciated if you could provide us this information as quickly as possible.

Thank you
Posted by Microsoft on 3/29/2011 at 1:14 PM
Thank you for your feedback, we are currently reviewing the issue you have submitted. If this issue is urgent, please contact support directly(http://support.microsoft.com)
Sign in to post a workaround.