基于发布或调试版本复制文件

本文关键字:复制 文件 版本 调试 于发布 | 更新日期: 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目标中。