基于发布或调试版本复制文件
本文关键字:复制 文件 版本 调试 于发布 | 更新日期: 2023-09-27 17:58:14
我正在对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)')" />
如今,您可能再也不需要CreateItem
了。项目组可以放置在目标内,并将在目标运行时进行评估。此外,由于输出目录与配置的名称相同,因此可以将其用作属性。加在一起,
<ItemGroup>
<NativeReleaseFlexNetFiles Include=
"..'..'..'..'utilities'FlexNet'$(Configuration)'Native'**'*.*"/>
</ItemGroup>
在您的AfterBuild目标中。