Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将引用的程序集复制到输出目录的子目录_C#_.net_Visual Studio_Visual Studio 2017 - Fatal编程技术网

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

C# 将引用的程序集复制到输出目录的子目录,c#,.net,visual-studio,visual-studio-2017,C#,.net,Visual Studio,Visual Studio 2017,通过在VS2017属性窗口中将.net引用的“Copy Local”设置为true,可以告诉生成过程将引用的程序集复制到项目的输出目录。但是,如果希望将程序集复制到输出目录(将通过app.config设置添加到搜索路径列表)的特定子目录,该怎么办?除了在后期构建步骤中使用批处理文件外,还有其他方法可以做到这一点吗?我想出的唯一方法是: 将有关引用的“复制本地”设置为false 将引用的部件文件作为内容单独添加到项目中(请参见下文) 最大的缺点是:如果任何引用的程序集都有自己的引用,那么它们(以及

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

我想出的唯一方法是:

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

    <ItemGroup> <!-- you probably already have an ItemGroup you can use -->
       <Content Include='subdir\referenced.dll'>
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
       </Content>
    </ItemGroup>
    
    
    保存最新
    
    请注意,如果您需要输出中的目录结构与源位置中的目录结构不同,则需要进行一些调整,如中所述:

    
    保存最新
    dest\u dir\referenced.dll
    
    您可以尝试以下方法:
    @hce我现在正在探索这个选项。总比什么都没有好,但这意味着我必须添加引用及其所有引用作为内容,并随着情况的变化保持此列表的最新状态。使用标准的“复制本地”选项,构建过程足够智能,可以自行收集和复制可传递的引用。
    <ContentWithTargetPath Include="source_dir\referenced.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <TargetPath>dest_dir\referenced.dll</TargetPath>
    </ContentWithTargetPath>