【问题标题】:Visual Studio 2010 custom output path for references用于参考的 Visual Studio 2010 自定义输出路径
【发布时间】:2011-12-14 09:36:02
【问题描述】:

我有几个第三方参考的 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) 的引用。

有没有更简单的方法?

【问题讨论】:

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


    【解决方案1】:

    尝试这样做:

    <ItemGroup>
        <LibFiles Include="$(SolutionDir)\lib\**\*.dll" />
    </ItemGroup>
    
    <Target Name="AfterBuild" Inputs="@(LibFiles)">
      <Copy SourceFiles="@(LibFiles)" DestinationFolder="$(OutputPath)\Libraries" />
    </Target>
    

    优点:

    1. 您不必每次添加新目标时都修改 AfterBuild 目标 参考您的项目
    2. 库只复制一次,或者如果任何文件的日期时间在 @(LibFiles) 已更改(更新后)

    缺点:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多