繁体   English   中英

使用MSBuild的复制任务时出现问题(VS2005TS团队生成)

[英]Problem using MSBuild's Copy task (VS2005TS Team Build)

我的项目经理指派我维护构建,但这是我与MSBuild的第一次接触,因此,与大多数初次接触一样,事情有些困难。 :)
我一直在努力让MSBuild / Team Build将一些文件复制到项目的“ bin”文件夹中,但是直到现在都没有成功。
这些文件保存在一个文件夹中,我们将其用作依赖项和适配器的存储库,因为我们需要能够彼此独立地编译解决方案,因此,当MSBuild开始工作并评估ItemGroup时,所有必需的文件都已经存在。 我的最后尝试是在“ BeforeDropBuild”目标上调用复制任务,如下所示:

<Target Name="BeforeDropBuild">
  <Delete Files="@(DebugPoints)" ContinueOnError="true"></Delete>
  <Copy SourceFiles="@(Adapters)" DestinationFolder="$(TargetDir)" ContinueOnError="true"></Copy>
</Target>

我已经为此工作了一段时间,因为完成构建过程基本上只剩下我了,所以我已经尝试了许多不同的方法,但是没有一种方法能给我带来预期的结果。

我尝试过的一些东西是:
-以完整路径为值的“ DestinationFolder”;
-删除构建后复制文件;
-在“ AfterBuild”目标上复制文件;

但是所有这些似乎都得到了相同的结果:甚至没有在BuildLog上输入失败的尝试来帮助我找出错误之处的条目。 就像现在的代码一样,它甚至为我提供了无法排除在其他文件夹中的pdb文件的日志,但是没有提及复制尝试,就像这样:

Target BeforeDropBuild:
    Deleting file "D:\blablabla\filepath\file.pdb".
MSBUILD : warning MSB3061: Unable to delete file "D:\blablabla\filepath\file.pdb". Access to the path 'D:\blablabla\filepath\file.pdb' is denied.
The previous error was converted to a warning because the task was called with ContinueOnError=true.
Build continuing because "ContinueOnError" on the task "Delete" is set to "true".

在项目“ TFSBuild.proj”中完成构建目标“ BeforeDropBuild”。
这似乎是一个非常基本的问题,但是我全无想法,甚至搜索都没有帮助我(这也使我认为这是非常基本的)。

编辑:

<Target Name="AfterDropBuild">
    <CreateItem Include="$(AdaptersFolder)\Adapter*.dll">
        <Output ItemName="Adaptadores" TaskParameter="Include"/>
    </CreateItem>
    <CreateProperty Value="$(DropLocation)\$(BuildNumber)\%(ConfigurationToBuild.FlavorToBuild)">
        <Output ItemName="ReleaseFolder" TaskParameter="Value"/>
    </CreateProperty>
    <Copy DestinationFolder="$(ReleaseFolder)" SourceFiles="@(Adaptadores)" ContinueOnError="true"></Copy>
    <OnError ExecuteTargets="Error"/>
</Target>

另一个尝试失败。 无论如何,那不是正确的目录,但是同样,没有文件被复制,甚至在日志文件上也没有提到AfterDropBuild目标。

由于某种原因,它没有获得预期的文件。
我不记得是不是这样,也许只是语法上的错误。 这是我现在的做法:

<Target Name="AfterDropBuild">
    <CreateItem Include="$(AdaptersFolder)\AdapterModule.*.dll">
        <Output ItemName="Adapters" TaskParameter="Include"/>
    </CreateItem>
    <Copy DestinationFolder="$(DropBuildAdapterPath)"
      SourceFiles="@(Adapters)" ContinueOnError="true"></Copy>
    <OnError ExecuteTargets="Error"/>
</Target>

这似乎也对构建期间创建的文件有效,因为它是在构建所有内容并将其复制到放置位置并将文件保留在构建路径上直到新的构建开始之后才创建项目(并因此验证列表) 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM