【问题标题】:MSBuild: Can't copy a dll file to a temp folderMSBuild:无法将 dll 文件复制到临时文件夹
【发布时间】:2017-11-29 15:16:27
【问题描述】:

以下 msbuild 脚本未将 Com.Library.Shared.dll 复制到 c:\tmp\。为什么?

<PropertyGroup>
    <DllFiles>$(MSBuildProjectDirectory)\bin\Debug\Com.Library.Shared.dll</DllFiles>
</PropertyGroup>  
<Target Name="AfterBuild">   
        <Copy 
        SourceFiles="@(DllFiles)" 
        DestinationFiles="@(DllFiles->'c:\tmp\%(Filename)%(Extension)')" /> 
</Target>

【问题讨论】:

  • 以冗长的速度运行。和/或添加 Message 语句以查看您在做什么。事实上,像这样的大多数基本问题总是可以这样解决。除此之外:DllFiles 是一个属性,但您使用的是 Item 语法。您确定这有效吗?
  • 它不能工作。需要是item,复制任务调用正确。

标签: msbuild


【解决方案1】:

项目访问语法@()%() 仅适用于项目,不适用于属性。

如果您将PropertyGroup 更改为ItemGroup,您的目标应该可以工作:

<ItemGroup>
   <DllFiles Include="$(MSBuildProjectDirectory)\bin\Debug\Com.Library.Shared.dll" />
</ItemGroup>

在 csproj/vbproj 文件的上下文之外进行测试的完整示例:

<Project DefaultTarget="Build">
  <Target Name="Build">
    <ItemGroup>
       <DllFiles Include="test.file" />
    </ItemGroup>  
        <Copy 
        SourceFiles="@(DllFiles)" 
        DestinationFiles="@(DllFiles->'c:\tmp\%(Filename)%(Extension)')" /> 
  </Target>
</Project>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2020-01-12
    相关资源
    最近更新 更多