【问题标题】:MSBuild - How to copy files that are outside the Project directoryMSBuild - 如何复制项目目录之外的文件
【发布时间】:2012-05-23 11:33:22
【问题描述】:

我是 MSBuild 的新手,我正在尝试将文件从源代码管理上的一个文件夹复制到项目目录。下面是代码:

<ItemGroup>
    <MySourceFiles Include="C:\my_clearcase_view\Demo_Folder\demo.jar" />
</ItemGroup>

<Target Name="AfterBuild">
   <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="$(MSBuildProjectDirectory)\demo.jar" />
</Target>

此代码适用于“demo.jar”文件的绝对路径。文件夹结构如下:

C:\my_clearcase_view\
             - DemoFolder (Source)
             - my_project (Destination, which is $(MSBuildProjectDirectory))

假设源路径永远不会改变,我怎样才能在文件夹层次结构中获取位于我的项目上方的源文件的相对路径?我只能使用 $(MSBuildDirectory) 到达项目目录的根目录。请指教。提前致谢。

【问题讨论】:

    标签: visual-studio-2008 msbuild copy csproj


    【解决方案1】:

    如果我对你的理解正确,你可以这样做;

    <ItemGroup>
        <MySourceFiles Include="$(MSBuildProjectDirectory)\..\Demo_Folder\demo.jar" />
    </ItemGroup>
    

    【讨论】:

    • 谢谢罗里。但这不起作用。我想提升我的 $MSBuildProjectDirectory 的层次结构。这给了我路径 - “C:\my_clearcase_view\my_project\..\Demo\demo.jar”,它会引发“找不到路径”错误。
    • 该错误与您问题中的示例的路径略有不同 - 它具有“\Demo\”而不是“\Demo_Folder\”。那是你的问题吗? “..”目录仅表示“此目录的父级”,因此如果您想升级一个(或多个)级别,它应该可以工作。
    【解决方案2】:

    根据 Rory 的回答,我尝试了不同的组合,最终得到了它。

    <ItemGroup>
       <MySourceFiles Include="..\Demo_Folder\demo.jar" />
    </ItemGroup>
    

    感谢罗里的指点。

    【讨论】:

      猜你喜欢
      • 2013-01-12
      • 2020-12-29
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2019-01-27
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多