2012-01-06 2 views
0

내 MSBuild 스크립트에서 AL 작업을 사용하려고 할 때마다 다른 결과를 얻습니다.MSBuild AL (어셈블리 링커) 타이밍 문제?

<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

$ (TempDirectory) \ sitetext.dll 어셈블리가 생성되기 전에 근원적으로 LibraryFilesToCopy 항목 컬렉션이 채워지는 것이 원인입니다. 수정은 간단합니다 :

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

완벽한 솔루션입니다. 고마워! MSBuild에 익숙하지 않고 ItemGroups의 작동 방식에 대한 단서도 없습니다. – adamwtiko