xcopy和MSBuild CopyTask都没有实际复制outfile文件

时间:2017-06-07 12:49:33

标签: c# visual-studio msbuild msbuild-task

我有一个主应用程序,它使用MEF加载插件,以及几个插件项目。 对于插件项目,我正在尝试为每个项目定义一个后构建操作,它将所有输出文件复制到我的主应用程序的\ plugins \子目录中。

所以例如从中复制所有文件 C:\解决方案的路径\ MySolution \ DummyPlugin \ bin \ x86 \ Debug \ *。* into C:\解决方案的路径\ MySolution \ MainApplication \ bin \ x86 \ Debug \ Plugins \

我正在使用构建事件

function Out = bwdist3D (Obj)
  [X, Y, Z] = ndgrid (1 : size (Obj, 1), 1 : size (Obj, 2), 1 : size (Obj, 3)); 
  [x, y, z] = ind2sub (size(Obj), reshape(find(Obj>0), [1,1,1,sum(Obj(:)>0)]));
  Out = min (sqrt((X-x).^2 + (Y-y).^2 + (Z-z).^2), [] ,4);
end

对于我的3个插件项目中的2个,这似乎工作得很好。 但是对于我的上一个项目,其输出程序集是Service.dll,这似乎失败了 - 就像在文件中一样,文件没有被复制。

我尝试用MSBuild Task替换build事件,如下所示,

xcopy "$(ProjectDir)$(OutDir)*" "$(SolutionDir)MainApplication\$(OutDir)Plugins\" /D /y /s /r

甚至尝试专门处理Service.dll,

<Target Name="AfterBuild">
  <CreateItem Include="$(ProjectDir)$(OutDir)*.*">
    <Output TaskParameter="Include" ItemName="PluginFiles"/>
  </CreateItem>
  <Copy SourceFiles="@(PluginFiles)" DestinationFolder="$(SolutionDir)MainApplication\$(OutDir)Plugins\" ContinueOnError="false" />
</Target>

在每种情况下,编译工作正常,没有错误输出或任何其他内容。但文件并没有被复制。

有没有任何线索在那里发生了什么?! 这可能是一些非常愚蠢的问题,但由于没有任何错误或没有任何输出,因此不确定如何进一步追踪问题..

由于

1 个答案:

答案 0 :(得分:1)

文件可能仍然在使用中&#39;通过msbuild(缓冲写入) - 有时候后期构建在完全写入之前就已经开始了。