MSBuild 3.5 /MaxCPUCount switch does not execute post build event on some projects within my solution
- We have about ~200 VS2008 C# solutions in a source folder which most of them has multiple projects within them. All these projects has post build steps which copies built binary files to a designated folder which is shared among developers around the globe.
Some projects within some solutions were not being built when MSBuild /m switch is set to more than 1. Everything goes fine when set to msbuild /m:1.
The workaround for me is to set this to the affected projects: <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> so these projects' post build step will be called. I try to limit this switch to projects to maximize the performance of the build server so it will only spend time building source files that has changed, and therefore publish binary files when it's updated. Otherwise, why bother with the post build step when nothing was changed since the last build?
What can i do to make MSBuild work correctly with /m switch? Perhaps is this not about the /m switch?
This is one of the affected project file:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProductVersion>9.0.30729</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>GeometryExport</RootNamespace> <AssemblyName>GeometryExport.XmlFile</AssemblyName> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> <SignAssembly>true</SignAssembly> <AssemblyOriginatorKeyFile>..\..\..\Publish\PublicKey.snk</AssemblyOriginatorKeyFile> <DelaySign>true</DelaySign> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> <DocumentationFile>bin\Debug\GeometryExport.XmlFile.XML</DocumentationFile> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <DocumentationFile>bin\Release\GeometryExport.XmlFile.XML</DocumentationFile> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core"> <RequiredTargetFramework>3.5</RequiredTargetFramework> </Reference> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml.Linq"> <RequiredTargetFramework>3.5</RequiredTargetFramework> </Reference> <Reference Include="System.Data.DataSetExtensions"> <RequiredTargetFramework>3.5</RequiredTargetFramework> </Reference> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="XmlFile.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> <None Include="..\..\..\Publish\PublicKey.snk"> <Link>PublicKey.snk</Link> </None> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. <Target Name="BeforeBuild"> </Target> <Target Name="AfterBuild"> </Target> --> <PropertyGroup> <PostBuildEvent>Call "$(SolutionDir)\..\..\BuildScripts\PublishProject.bat" "$(ProjectDir)" "$(TargetDir)" "$(TargetName)" "$(ConfigurationName)" NT</PostBuildEvent> </PropertyGroup> </Project>
Answers
- Hi Khang,
Sorry for my late reply.
I have recieved your source code. I just found that you have set to run the PostBuildEvent when project update, which I didn't set in my test projects.
After setting it, I can stably reproduce this issue. In the msbuild diagnostic log, it shows that the _AssemblyTimestampBeforeCompile property is not set value when it is executed in multiple CPUs.
I checked that this private property has already been set by the value of %(IntermediateAssembly.ModifiedTime).
After checking the IntermediateAssembly's modified time from windows, I make sure that the intermediate assembly is updated correct.
So I suspect it should be a bug in MSBuild. I have filed a bug for that. You can check it at:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=508141
Please let me know if you have any feedback on that. Thanks.
Hongye Sun [MSFT]
MSDN Subscriber Support in Forum
If you have any feedback on our support, please contact msdnmg @ microsoft.com
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.- Marked As Answer byHongye SunMSFT, ModeratorFriday, November 13, 2009 3:30 AM
All Replies
Hi Khang,
Thanks for your post.
I suspect that this issue is because that there is some operations in PublishProject.bat script which can cause conflicts when executed in multiple processes. Can you find any error message from the build log?
To prevent this issue, I would recommend you to put the publish operation in one step at the end of all projects build instead of in every project build.
Otherwise, you have to force your build in one process to prevent conflicts.
Hongye Sun [MSFT]
MSDN Subscriber Support in Forum
If you have any feedback on our support, please contact msdnmg @ microsoft.com
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.- Hi Hongye,
Thanks for the reply.
However, when i set all these projects to execute post build step on every successful build, <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> , msbuild /m is able to execute the post build step for all projects concurrently. So I dont think it's coming from the batch file though.
This PublishProject.bat file is used in all projects, with mostly the same parameters. It's used to separate pdb files, exe files, dll files, xml files to different folders.
How do I put the publish operation like you said, in one step at the end of all projects build instead of in every project build? Any sample codes or anything i can refer to? Thanks.
Regards,
Lee - Build logs without /m switch:
Microsoft (R) Build Engine Version 3.5.30729.1 [Microsoft .NET Framework, Version 2.0.50727.3603] Copyright (C) Microsoft Corporation 2007. All rights reserved. CopyFilesToOutputDirectory: GeometryExport-Interfaces -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.dll PostBuildEvent: E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Documentation\Xml\GeometryExport-Interfaces.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport-Interfaces.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.dll -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport-Interfaces.dll 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.pdb -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport-Interfaces.pdb 1 File(s) copied CopyFilesToOutputDirectory: BkgFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\BkgFile\bin\Release\GeometryExport.BkgFile.dll PostBuildEvent: E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\BkgFile\bin\Release\GeometryExport.BkgFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Documentation\Xml\GeometryExport.BkgFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\BkgFile\bin\Release\GeometryExport.BkgFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.BkgFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\BkgFile\bin\Release\GeometryExport.BkgFile.dll -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.BkgFile.dll 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\BkgFile\bin\Release\GeometryExport.BkgFile.pdb -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.BkgFile.pdb 1 File(s) copied CopyFilesToOutputDirectory: CsvFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\CsvFile\bin\Release\GeometryExport.CsvFile.dll PostBuildEvent: E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\CsvFile\bin\Release\GeometryExport.CsvFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Documentation\Xml\GeometryExport.CsvFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\CsvFile\bin\Release\GeometryExport.CsvFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.CsvFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\CsvFile\bin\Release\GeometryExport.CsvFile.dll -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.CsvFile.dll 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\CsvFile\bin\Release\GeometryExport.CsvFile.pdb -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.CsvFile.pdb 1 File(s) copied CopyFilesToOutputDirectory: ShpFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\ShpFile\bin\Release\GeometryExport.ShpFile.dll PostBuildEvent: E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\ShpFile\bin\Release\GeometryExport.ShpFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Documentation\Xml\GeometryExport.ShpFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\ShpFile\bin\Release\GeometryExport.ShpFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.ShpFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\ShpFile\bin\Release\GeometryExport.ShpFile.dll -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.ShpFile.dll 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\ShpFile\bin\Release\GeometryExport.ShpFile.pdb -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.ShpFile.pdb 1 File(s) copied CopyFilesToOutputDirectory: StrFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\StrFile\bin\Release\GeometryExport.StrFile.dll PostBuildEvent: E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\StrFile\bin\Release\GeometryExport.StrFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Documentation\Xml\GeometryExport.StrFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\StrFile\bin\Release\GeometryExport.StrFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.StrFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\StrFile\bin\Release\GeometryExport.StrFile.dll -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.StrFile.dll 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\StrFile\bin\Release\GeometryExport.StrFile.pdb -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.StrFile.pdb 1 File(s) copied CopyFilesToOutputDirectory: UniversalFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\UniversalFile\bin\Release\GeometryExport.UniversalFile.dll PostBuildEvent: E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\UniversalFile\bin\Release\GeometryExport.UniversalFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Documentation\Xml\GeometryExport.UniversalFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\UniversalFile\bin\Release\GeometryExport.UniversalFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.UniversalFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\UniversalFile\bin\Release\GeometryExport.UniversalFile.dll -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.UniversalFile.dll 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\UniversalFile\bin\Release\GeometryExport.UniversalFile.pdb -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.UniversalFile.pdb 1 File(s) copied CopyFilesToOutputDirectory: XmlFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\XmlFile\bin\Release\GeometryExport.XmlFile.dll PostBuildEvent: E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\XmlFile\bin\Release\GeometryExport.XmlFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Documentation\Xml\GeometryExport.XmlFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\XmlFile\bin\Release\GeometryExport.XmlFile.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.XmlFile.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\XmlFile\bin\Release\GeometryExport.XmlFile.dll -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.XmlFile.dll 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\XmlFile\bin\Release\GeometryExport.XmlFile.pdb -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport.XmlFile.pdb 1 File(s) copied
Build logs with /m:
Microsoft (R) Build Engine Version 3.5.30729.1 [Microsoft .NET Framework, Version 2.0.50727.3603] Copyright (C) Microsoft Corporation 2007. All rights reserved. GeometryExport-Interfaces -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.dll E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Documentation\Xml\GeometryExport-Interfaces.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.XML -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport-Interfaces.XML 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.dll -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport-Interfaces.dll 1 File(s) copied E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.pdb -> E:\yyyyyyyy\yyyyyy\yyyy\Publish\Release\NT\GeometryExport-Interfaces.pdb 1 File(s) copied BkgFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\BkgFile\bin\Release\GeometryExport.BkgFile.dll ShpFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\ShpFile\bin\Release\GeometryExport.ShpFile.dll UniversalFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\UniversalFile\bin\Release\GeometryExport.UniversalFile.dll CsvFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\CsvFile\bin\Release\GeometryExport.CsvFile.dll StrFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\StrFile\bin\Release\GeometryExport.StrFile.dll XmlFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\XmlFile\bin\Release\GeometryExport.XmlFile.dll
- Well, i don't think it's the batch file now. I changed all the post build steps for all projects in this solution to:
echo Post Building "$(TargetName) and the result is just the same.
Rebuilding configuration 'Release|Any CPU'... Command: C:\WINDOWS\Microsoft.NET\Framework\v3.5\MsBuild.exe E:\yyyyyyyy\yyyyyy\yyyy\BuildScripts\..\Data\GeometryExport\\GeometryExport.sln /t:rebuild /p:Configuration=Release "/p:Platform=Any CPU" /v:minimal /maxcpucount C:\WINDOWS\Microsoft.NET\Framework\v3.5\MsBuild.exe E:\yyyyyyyy\yyyyyy\yyyy\BuildScripts\..\Data\GeometryExport\\GeometryExport.sln /t:rebuild /p:Configuration=Release "/p:Platform=Any CPU" /v:minimal /maxcpucount Microsoft (R) Build Engine Version 3.5.30729.1 [Microsoft .NET Framework, Version 2.0.50727.3603] Copyright (C) Microsoft Corporation 2007. All rights reserved. GeometryExport-Interfaces -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\GeometryExport-Interfaces\bin\Release\GeometryExport-Interfaces.dll Post Building "GeometryExport-Interfaces" BkgFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\BkgFile\bin\Release\GeometryExport.BkgFile.dll ShpFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\ShpFile\bin\Release\GeometryExport.ShpFile.dll CsvFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\CsvFile\bin\Release\GeometryExport.CsvFile.dll StrFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\StrFile\bin\Release\GeometryExport.StrFile.dll XmlFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\XmlFile\bin\Release\GeometryExport.XmlFile.dll UniversalFile -> E:\yyyyyyyy\yyyyyy\yyyy\Data\GeometryExport\UniversalFile\bin\Release\GeometryExport.UniversalFile.dll
I think it's a msbuild /m defect somewhere. Do you think so? Hi Khang,
Thanks for your clarification.
I am trying to reproduce the issue but failed. These are my steps:
1. Create 1 solution and add 3 new C# Class Library projects
2. Add Command: "Echo PostBuild: $(TargetName)" to all PostBuildEvent
3. Build with command: msbuild <solution path> /t:rebuild /p:Configuration=Release "/p:Platform=Any CPU" /v:minimal /maxcpucount:4
The output is expected.
Can you follow the steps above to repro this issue on your machine? If it is unreproducible, can you build a repro project and send mail to me at hongyes @ microsoft.com (Please remove spaces)?
If the project is too big, please send me email as well. I will create a transfer for you and I will send you the link and password.
Have a nice day.
Hongye Sun [MSFT]
MSDN Subscriber Support in Forum
If you have any feedback on our support, please contact msdnmg @ microsoft.com
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.- Hi Hongye,
Thank you for the reply. However i forgot to specify that there are some dependencies within the projects.
GeometryExport-Interfaces is used by all other projects in the project. That's why you can see the above build log, that GeometryExport-Interfaces had its post build step run successfully, but not the rest of the projects.
What i expect from the build result was, post build steps for all XXXXXXXFile projects to be executed too.
My build machine is a Windows Server 2003 SP2 with 2 CPUs. I have other build machines that had the same problem too with 2 CPUs and above, which includes my development laptop.
Can you please test the project dependency scenerio before i send you my repro projects? Thank you.
Regards,
Lee - Thanks for your reply, Lee.
By following your instructions to set the project dependencies, I still can't repro this issue. I tried both Windows 2003 and 2008 system.
You'd better to follow my steps to create new projects to repro this issue. This way can help us to narrow down if it is an environment specific or project specific issue.
Please let me know any updates. Thanks.
Hongye Sun [MSFT]
MSDN Subscriber Support in Forum
If you have any feedback on our support, please contact msdnmg @ microsoft.com
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us. - Hi Hongye,
Thanks for the reply. I can't reproduce the problem with new solutions either. I'll mail you the other affected solution + source codes to your email today. Please whitelist mails coming from kylee @ bksv . com without the spaces. Thank you.
Regards,
Lee - Hi Hongye,
Please let me know if you need me to resend the attachment project. Thanks.
Regards,
Lee - Hi Hongye,
Any updates?
Regards,
Lee - Hi Khang,
Sorry for my late reply.
I have recieved your source code. I just found that you have set to run the PostBuildEvent when project update, which I didn't set in my test projects.
After setting it, I can stably reproduce this issue. In the msbuild diagnostic log, it shows that the _AssemblyTimestampBeforeCompile property is not set value when it is executed in multiple CPUs.
I checked that this private property has already been set by the value of %(IntermediateAssembly.ModifiedTime).
After checking the IntermediateAssembly's modified time from windows, I make sure that the intermediate assembly is updated correct.
So I suspect it should be a bug in MSBuild. I have filed a bug for that. You can check it at:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=508141
Please let me know if you have any feedback on that. Thanks.
Hongye Sun [MSFT]
MSDN Subscriber Support in Forum
If you have any feedback on our support, please contact msdnmg @ microsoft.com
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.- Marked As Answer byHongye SunMSFT, ModeratorFriday, November 13, 2009 3:30 AM
- Hi Hongye,
Thank you so much. Looking forward for the fix.
Regards,
Lee - Hi Hongye,
Is it possible to speed up the bug fixing process with the support contract we had with Microsoft? Would it make any difference?
Regards,
Lee - Hi Lee,
The fixing process is depending on the product group's plan and the issue's severity.
It may help if you contact a support professional.
Hope it helps.
Hongye Sun [MSFT]
MSDN Subscriber Support in Forum
If you have any feedback on our support, please contact msdnmg @ microsoft.com
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.


