【发布时间】:2010-06-09 21:24:57
【问题描述】:
我正在尝试在构建主 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属性中指定的值并在任务中使用?
【问题讨论】:
标签: visual-studio-2010 msbuild