【问题标题】:Copy referenced assemblies to subdirectory of output directory将引用的程序集复制到输出目录的子目录
【发布时间】:2018-10-28 02:38:25
【问题描述】:

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

【问题讨论】:

  • 您可以尝试以下方法:
    stackoverflow.com/questions/18743907/…
  • @hce 我现在实际上正在探索这个选项。总比没有好,但这意味着我必须将参考及其所有参考添加为内容,并随着事情的变化保持此列表的最新状态。使用标准的“复制本地”选项,构建过程足够智能,可以自行收集和复制传递引用。

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


【解决方案1】:

我想出的唯一方法是:

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

在 .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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2011-10-07
    • 2014-10-06
    • 2011-11-03
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多