2

私はcsprojファイルにこのmsbuildターゲットを持っています:

<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release' ">
    <CreateItem Condition="'%(Extension)'=='.dll'" Include="@(ReferenceCopyLocalPaths)">
        <Output TaskParameter="Include" ItemName="IlmergeAssemblies" />
    </CreateItem>
    <Exec Command="&quot;$(ProjectDir)..\..\..\tools\IlMerge\Ilmerge.exe&quot; /targetplatform:&quot;v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319&quot; /ndebug /out:@(MainAssembly) &quot;@(IntermediateAssembly)&quot; @(IlmergeAssemblies->'&quot;%(FullPath)&quot;', ' ')" />
    <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>

これは魅力のように機能します。しかし、私はそれが特定のファイルを除外することを望み、それを微調整しようとしました:

<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release' ">
    <CreateItem Condition="'%(Extension)'=='.dll' AND '%(Filename)' != 'Foo.dll'" Include="@(ReferenceCopyLocalPaths)">
        <Output TaskParameter="Include" ItemName="IlmergeAssemblies" />
    </CreateItem>
    <Exec Command="&quot;$(ProjectDir)..\..\..\tools\IlMerge\Ilmerge.exe&quot; /targetplatform:&quot;v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319&quot; /ndebug /out:@(MainAssembly) &quot;@(IntermediateAssembly)&quot; @(IlmergeAssemblies->'&quot;%(FullPath)&quot;', ' ')" />
    <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>

ただし、これは機能しません。誰かが私が間違っていることを知っていますか?

4

1 に答える 1

4

%(ファイル名)には、ファイルの名前のみが含まれます。

したがって、 %(Filename)'!=' Foo'をテストできます:

<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release' ">
<CreateItem Condition="'%(Extension)'=='.dll' AND '%(Filename)' != 'Foo'" Include="@(ReferenceCopyLocalPaths)">
    <Output TaskParameter="Include" ItemName="IlmergeAssemblies" />
</CreateItem>
<Exec Command="&quot;$(ProjectDir)..\..\..\tools\IlMerge\Ilmerge.exe&quot; /targetplatform:&quot;v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319&quot; /ndebug /out:@(MainAssembly) &quot;@(IntermediateAssembly)&quot; @(IlmergeAssemblies->'&quot;%(FullPath)&quot;', ' ')" />
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />

于 2012-06-20T13:47:39.900 に答える