22 <Import Project =" Microsoft.CodeDom.Providers.DotNetCompilerPlatform.Extensions.props" />
33
44 <ItemGroup >
5- <RoslyCompilerFiles Include =" $(RoslynToolPath)\*" >
5+ <RoslynCompilerFiles Include =" $(RoslynToolPath)\*" >
66 <Link >roslyn\%(RecursiveDir)%(Filename)%(Extension)</Link >
7- </RoslyCompilerFiles >
7+ </RoslynCompilerFiles >
88 </ItemGroup >
99 <Target Name =" IncludeRoslynCompilerFilesToFilesForPackagingFromProject" BeforeTargets =" PipelineCollectFilesPhase" >
1010 <ItemGroup >
11- <FilesForPackagingFromProject Include =" @(RoslyCompilerFiles )" >
11+ <FilesForPackagingFromProject Include =" @(RoslynCompilerFiles )" >
1212 <DestinationRelativePath >bin\roslyn\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath >
1313 <FromTarget >IncludeRoslynCompilerFilesToFilesForPackagingFromProject</FromTarget >
1414 <Category >Run</Category >
1515 </FilesForPackagingFromProject >
1616 </ItemGroup >
1717 </Target >
18- <Target Name =" CopyRoslynCompilerFilesToOutputDirectory " AfterTargets = " CopyFilesToOutputDirectory " >
19- <PropertyGroup >
20- <RoslynToolsDestinationFolder >$(WebProjectOutputDir)\bin\roslyn</RoslynToolsDestinationFolder >
21- <RoslynToolsDestinationFolder Condition =" '$(WebProjectOutputDir)' == '' " >$(OutputPath)\roslyn</RoslynToolsDestinationFolder >
18+ <Target Name =" LocateRoslynToolsDestinationFolder " Condition = " '$(RoslynToolsDestinationFolder)' == '' " >
19+ <PropertyGroup >
20+ <RoslynToolsDestinationFolder >$(WebProjectOutputDir)\bin\roslyn</RoslynToolsDestinationFolder >
21+ <RoslynToolsDestinationFolder Condition =" '$(WebProjectOutputDir)' == '' " >$(OutputPath)\roslyn</RoslynToolsDestinationFolder >
2222 </PropertyGroup >
23- <Copy SourceFiles =" @(RoslyCompilerFiles)" DestinationFolder =" $(RoslynToolsDestinationFolder)" ContinueOnError =" true" SkipUnchangedFiles =" true" Retries =" 0" />
23+ </Target >
24+ <Target Name =" CopyRoslynCompilerFilesToOutputDirectory" AfterTargets =" CopyFilesToOutputDirectory" DependsOnTargets =" LocateRoslynToolsDestinationFolder" >
25+ <Copy SourceFiles =" @(RoslynCompilerFiles)" DestinationFolder =" $(RoslynToolsDestinationFolder)" ContinueOnError =" true" SkipUnchangedFiles =" true" Retries =" 0" />
2426 <ItemGroup Condition =" '$(MSBuildLastTaskResult)' == 'True'" >
2527 <FileWrites Include =" $(RoslynToolsDestinationFolder)\*" />
2628 </ItemGroup >
2729 </Target >
28- <Target Name = " KillVBCSCompilerAndRetryCopy" AfterTargets =" CopyRoslynCompilerFilesToOutputDirectory" Condition =" '$(MSBuildLastTaskResult)' == 'False'" >
30+ <Target Name =" CheckIfShouldKillVBCSCompiler" >
31+ <CheckIfVBCSCompilerWillOverride src =" $(RoslynToolPath)\VBCSCompiler.exe" dest =" $(RoslynToolsDestinationFolder)\VBCSCompiler.exe" >
32+ <Output TaskParameter =" WillOverride" PropertyName =" ShouldKillVBCSCompiler" />
33+ </CheckIfVBCSCompilerWillOverride >
34+ </Target >
35+ <Target Name = " KillVBCSCompilerBeforeCopy" BeforeTargets =" CopyRoslynCompilerFilesToOutputDirectory" DependsOnTargets =" LocateRoslynToolsDestinationFolder;CheckIfShouldKillVBCSCompiler" >
36+ <KillProcess ProcessName =" VBCSCompiler" ImagePath =" $(RoslynToolsDestinationFolder)" Condition =" '$(ShouldKillVBCSCompiler)' == 'True'" />
37+ </Target >
38+ <Target Name = " KillVBCSCompilerBeforeClean" AfterTargets =" BeforeClean" DependsOnTargets =" LocateRoslynToolsDestinationFolder" >
2939 <KillProcess ProcessName =" VBCSCompiler" ImagePath =" $(RoslynToolsDestinationFolder)" />
30- <Copy SourceFiles =" @(RoslyCompilerFiles)" DestinationFolder =" $(RoslynToolsDestinationFolder)" ContinueOnError =" true" SkipUnchangedFiles =" true" />
31- <ItemGroup >
32- <FileWrites Include =" $(RoslynToolsDestinationFolder)\*" />
33- </ItemGroup >
3440 </Target >
3541 <UsingTask TaskName =" KillProcess" TaskFactory =" CodeTaskFactory" AssemblyFile =" $(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
3642 <ParameterGroup >
5763 {
5864 var mo = results.Cast<ManagementObject>().FirstOrDefault();
5965 Log.LogMessage("ExecutablePath is {0}", (string)mo["ExecutablePath"]);
60- if(mo != null && string.Compare ((string)mo["ExecutablePath"], ImagePath, StringComparison.OrdinalIgnoreCase) > 0 )
66+ if(mo != null && ((string)mo["ExecutablePath"]).StartsWith( ImagePath, StringComparison.OrdinalIgnoreCase))
6167 {
6268 p.Kill();
69+ p.WaitForExit();
6370 Log.LogMessage("{0} is killed", (string)mo["ExecutablePath"]);
6471 break;
6572 }
7683 </Code >
7784 </Task >
7885 </UsingTask >
86+ <UsingTask TaskName =" CheckIfVBCSCompilerWillOverride" TaskFactory =" CodeTaskFactory" AssemblyFile =" $(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
87+ <ParameterGroup >
88+ <Src ParameterType =" System.String" Required =" true" />
89+ <Dest ParameterType =" System.String" Required =" true" />
90+ <WillOverride ParameterType =" System.Boolean" Output =" true" />
91+ </ParameterGroup >
92+ <Task >
93+ <Reference Include =" System.IO" />
94+ <Code Type =" Fragment" Language =" cs" >
95+ <![CDATA[
96+ WillOverride = false;
97+ try {
98+ WillOverride = File.Exists(Src) && File.Exists(Dest) && (File.GetLastWriteTime(Src) != File.GetLastWriteTime(Dest));
99+ }
100+ catch { }
101+ ]]>
102+ </Code >
103+ </Task >
104+ </UsingTask >
79105</Project >
0 commit comments