将引用的程序集复制到输出目录的子目录

时间:2018-05-17 18:13:40

标签: c# .net visual-studio visual-studio-2017

通过在VS2017属性窗口中为.net引用设置“复制本地”为true,可以告诉构建过程将引用的程序集复制到项目的输出目录中。但是,如果您希望将程序集复制到输出目录的特定子目录(将通过app.config设置添加到搜索路径列表中),该怎么办?有没有办法做到这一点,没有在后期构建步骤中使用批处理文件?

1 个答案:

答案 0 :(得分:0)

我想出这项工作的唯一方法是:

  1. 将“复制本地”设置为 false 以查找相关参考
  2. 将引用的程序集文件作为内容单独添加到项目中(见下文)
  3. 最大的缺点:如果任何引用的程序集都有自己的引用,那么它们(以及它们自己的引用等)将需要以相同的方式添加为内容。如果这些程序集的参考列表中的任何一个发生更改,您将需要更新项目。
  4. 在.vcxproj中:

    <ItemGroup> <!-- you probably already have an ItemGroup you can use -->
       <Content Include='subdir\referenced.dll'>
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
       </Content>
    </ItemGroup>
    

    请注意,如果您需要输出中的目录结构与源位置中的目录结构不同,则需要按照this answer中所述稍微调整一下:

    <ContentWithTargetPath Include="source_dir\referenced.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <TargetPath>dest_dir\referenced.dll</TargetPath>
    </ContentWithTargetPath>