Пользовательский путь вывода Visual Studio 2010 для ссылок - PullRequest
1 голос
/ 14 декабря 2011

У меня есть проект 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>

Однако это утомляет, так как мне приходится вручную добавлять ссылки на @(LibFiles) при добавлении ссылки в VS.

Есть ли более простой способ?

1 Ответ

2 голосов
/ 14 декабря 2011

Попробуйте сделать это следующим образом:

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

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

Плюсы:

  1. вам не нужно изменять цель AfterBuild каждый раз, когда вы добавляете новую ссылку в свои проекты
  2. библиотеки копируются только один раз или при изменении даты и времени любого из файлов в @ (LibFiles) (после обновления)

Минусы:

  1. у вас будет большеdlls в папке библиотек, наверное.Но вы можете отфильтровать их, используя Exclude = "$ (SolutionDir) \ lib \ ** \ Debug \ *. Dll", например
...