我正在对csproj文件进行一些更改,所以当我构建调试时,它将复制一组调试文件,当我构建版本时,它将复制一组发布文件。
csproj的开头:
<PropertyGroup>
...
<FlexNetInput></FlexNetInput>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
<FlexNetInput>"..\..\..\..\utilities\FlexNet\Debug\Native\"</FlexNetInput>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
<FlexNetInput>"..\..\..\..\utilities\FlexNet\Release\Native\"</FlexNetInput>
</PropertyGroup>
在csproj的最后,这就是我所拥有的:
<Target Name="AfterBuild">
<!-- Copy Native DGI DLL's -->
<CreateItem Include="..\..\..\..\utilities\dgi\DgiNative\**\*.*">
<Output TaskParameter="Include" ItemName="NativeDgiFiles" />
</CreateItem>
<Copy SourceFiles="@(NativeDgiFiles)" DestinationFiles="@(NativeDgiFiles->'$(OutputPath)\Native\%(RecursiveDir)%(Filename)%(Extension)')" />
<!-- Copy Native FlexNet DLL's -->
<CreateItem Include="'$(FlexNetInput)'**\*.*">
<Output TaskParameter="Include" ItemName="NativeReleaseFlexNetFiles" />
</CreateItem>
<Copy SourceFiles="@(NativeReleaseFlexNetFiles)" DestinationFiles="@(NativeReleaseFlexNetFiles->'$(OutputPath)\Native\%(RecursiveDir)%(Filename)%(Extension)')" />
dgi文件的副本工作正常,但因为FlexNet文件的位置不同,取决于它是否是发布或调试我无法使其工作。
我得到的错误是: 无法评估项元数据“%(Filename)”。项元数据“%(Filename)”无法应用于路径“'”........ \ utilities \ FlexNet \ Debug \ Native \“***。*'”。路径中的非法字符。
我不认为我正在使用这些属性,任何想法?
解决了,这就是我的工作方式:
<CreateItem Include="..\..\..\..\utilities\FlexNet\$(Configuration)\Native\**\*.*">
<Output TaskParameter="Include" ItemName="NativeFlexNetFiles" />
</CreateItem>
<Copy SourceFiles="@(NativeFlexNetFiles)" DestinationFiles="@(NativeFlexNetFiles->'$(OutputPath)\Native\%(RecursiveDir)%(Filename)%(Extension)')" />
答案 0 :(得分:0)
这些天你可能永远不需要CreateItem
anymore。 ItemGroups可以放在目标中,并在目标运行时进行评估。此外,由于输出目录与Configuration的名称相同,因此可以将其用作属性。这一起给出了
<ItemGroup>
<NativeReleaseFlexNetFiles Include=
"..\..\..\..\utilities\FlexNet\$(Configuration)\Native\**\*.*"/>
</ItemGroup>
在AfterBuild目标中。