2012-01-06 14 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

根本的な原因は、LibraryFilesToCopyアイテムコレクションが$ B($ 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)"/> 
+0

完璧な解決策です。ありがとう!私はむしろMSBuildの新機能であり、ItemGroupsの仕組みを知らない – adamwtiko

関連する問題