Visual Studio 2010自定义输出路径以供参考

时间:2011-12-14 09:36:03

标签: visual-studio-2010 msbuild build-process

我有VS2010项目,有几个第三方参考。有没有办法自动将这些引用输出到$(OutputPath)\Libraries而不只是$(OutputPath)

现在我有一个自定义AfterBuild目标,看起来像这样,

<Target Name="AfterBuild">
  <ItemGroup>
    <LibFiles Include="$(SolutionDir)\lib\dotnetzip-1.9\Release\Ionic.Zip.dll" />
    <LibFiles Include="$(SolutionDir)\lib\ninject-2.2.0.0\Ninject.dll" />
    <LibFiles Include="$(SolutionDir)\lib\nlog-2.0.0.2000\NLog.dll" />
    <LibFiles Include="$(SolutionDir)\lib\nlog-2.0.0.2000\NLog.Extended.dll" />
  </ItemGroup>

  <Copy SourceFiles="@(LibFiles)" DestinationFolder="$(OutputPath)\Libraries" />
</Target>

然而,这很累,因为在VS中添加引用时我必须手动添加对@(LibFiles)的引用。

有更简单的方法吗?

1 个答案:

答案 0 :(得分:2)

尝试这样做:

<ItemGroup>
    <LibFiles Include="$(SolutionDir)\lib\**\*.dll" />
</ItemGroup>

<Target Name="AfterBuild" Inputs="@(LibFiles)">
  <Copy SourceFiles="@(LibFiles)" DestinationFolder="$(OutputPath)\Libraries" />
</Target>

优点:

  1. 每次添加新内容时都不必修改AfterBuild目标 参考你的项目
  2. 只复制一次库,或者复制任何文件的日期时间 @(LibFiles)已更改(更新后)
  3. 缺点:

    1. 我猜你会在Libraries文件夹中有更多的dll。但您可以使用Exclude =“$(SolutionDir)\ lib \ * * \ Debug \ * .dll”来过滤它们,例如