MSBuild AL (компоновщик сборок) проблема синхронизации? - PullRequest
0 голосов
/ 06 января 2012

Я пытаюсь использовать задачу AL в своем скрипте MSBuild, и каждый раз, когда я запускаю ее, я получаю разные результаты.

<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>

Я в основномУ меня есть текстовый файл, я хочу преобразовать его в ресурс (работает), а затем создать из него dll (работает), но это всегда конечное копирование и удаление задач, которые очень случайны.Есть ли проблема синхронизации с задачами AL?Есть ли возможность сделать паузу, пока они не закончатся?

1 Ответ

1 голос
/ 07 января 2012

Основная причина заключается в том, что коллекция элементов LibraryFilesToCopy заполнена ДО создания $ (TempDirectory) \ sitetext.dll сборки.Исправить просто:

<!-- 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)"/>
...