Я пытаюсь добавить задачу для сборки DLL прокси-сервера COM после сборки основной библиотеки DLL. Поэтому я создал в файле .target следующее:
<Target Name="ProxyDLL"
Inputs="$(IntDir)%(WHATGOESHERE)_i.c;$(IntDir)dlldata.c"
Outputs="$(OutDir)%(WHATGOESHERE)ps.dll"
AfterTargets="Link">
<CL Sources="$(IntDir)%(WHATGOESHERE)_i.c;$(IntDir)dlldata.c" />
</Target>
И ссылаться на него из файла .vcxproj как
<ItemGroup>
<ProxyDLL Include="FTAccountant" />
</ItemGroup>
Таким образом, файл FTAccountant.DLL создается в процессе обычной сборки, а затем при попытке компилировать заглушки прокси создает следующие командные строки:
cl /c dir\_i.c dir\dlldata.c
И, конечно, он не может найти _i.c. Первая попытка, я поместил% (Filename) в пространство WHATGOESHERE, и я получил эту ошибку:
C:\ActivePay\Build\Proxy DLL.targets(6,3): error MSB4095: The item metadata
%(Filename) is being referenced without an item name. Specify the item name by
using %(itemname.Filename).
Поэтому я изменил его на% (itemname.Filename), и это пустая строка. Как получить значение, указанное в атрибуте Include задачи, и использовать его в задаче?