Reputation: 2905
I'm attempting to use the AL task in my MSBuild script and each time I run it I get different results.
<Target Name="Build">
<PropertyGroup>
<RootFolder>$([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory)))</RootFolder>
<TempDirectory>$(MSBuildProjectDirectory)\temp</TempDirectory>
<WebsiteDirectory>$(RootFolder)\httpdocs\bin</WebsiteDirectory>
</PropertyGroup>
<ItemGroup>
<ResourceFilesToDelete Include="$(TempDirectory)\**\*.resources"/>
<LibraryFilesToCopy Include="$(TempDirectory)\**\*.dll"/>
</ItemGroup>
<!-- English translations -->
<MakeDir Directories="$(TempDirectory)" Condition="!Exists('$(TempDirectory)')"/>
<GenerateResource Sources="$(MSBuildProjectDirectory)\sitetext.txt" OutputResources="$(TempDirectory)\sitetext.resources"/>
<AL EmbedResources="$(TempDirectory)\sitetext.resources" OutputAssembly="$(TempDirectory)\sitetext.dll"/>
<Copy SourceFiles="@(LibraryFilesToCopy)" DestinationFolder="$(WebsiteDirectory)\%(RecursiveDir)"/>
<Delete Files="@(ResourceFilesToDelete)"/>
</Target>
I basically have a text file, I want to convert it to a resource (works) and then create a dll from it (works) but it's always the end copy and delete tasks that are very random. Is there a timing issue with AL tasks? Is there anyway to pause until they are finished?
Upvotes: 0
Views: 234
Reputation: 6173
The root cause is that LibraryFilesToCopy item collection is filled BEFORE $(TempDirectory)\sitetext.dll assembly is generated. Fix is simple:
<!-- English translations -->
<MakeDir Directories="$(TempDirectory)" Condition="!Exists('$(TempDirectory)')"/>
<GenerateResource Sources="$(MSBuildProjectDirectory)\sitetext.txt" OutputResources="$(TempDirectory)\sitetext.resources"/>
<AL EmbedResources="$(TempDirectory)\sitetext.resources" OutputAssembly="$(TempDirectory)\sitetext.dll"/>
<ItemGroup>
<ResourceFilesToDelete Include="$(TempDirectory)\**\*.resources"/>
<LibraryFilesToCopy Include="$(TempDirectory)\**\*.dll"/>
</ItemGroup>
<Copy SourceFiles="@(LibraryFilesToCopy)" DestinationFolder="$(WebsiteDirectory)\%(RecursiveDir)"/>
<Delete Files="@(ResourceFilesToDelete)"/>
Upvotes: 1