Visual Studio:如何“复制到输出目录”而不复制文件夹结构?

我的项目文件夹的\ lib文件夹中有几个dll文件。 在dll的属性页面中,我select了“Build Action”作为“Content”和“Copy to Output Directory”作为“Copy always”。

编译后,我实际上得到了复制的dll,但它们在\ bin \ Release \ lib中,而不在\ bin \ Release中。

有没有办法将dll文件复制到\ bin \ Release(而不是\ bin \ Release \ lib),而无需编写生成脚本或使用nant等?

将它们保存在$(ProjectDir)\Lib ,但将这些文件“ 作为链接 ”添加到.csproj的根目录中。 现在,它们将被复制到bin \ Debug(或任何其他输出文件夹)而不在lib中。

而不是<Content>使用<ContentWithTargetPath>并指定目标path,如下所示:

 <ContentWithTargetPath Include="lib\some_file.dat"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <TargetPath>some_file.dat</TargetPath> </ContentWithTargetPath> 

请注意,此条目可能不会从Visual Studio(2012,2015,2017)中可见,但是一旦手动添加到csproj,它将显示在Visual Studio中。 但是目标path不能通过UI进行编辑。

将dll文件添加为项目的引用,并将参考集“Copy local”添加为true。

看来在VisualStudio 2015中,如果你正在'添加一个链接'的DLL 在同一个项目的子文件夹中 – 他们将自动放置一个文件夹,输出也被放置在一个文件夹,就像你看到的。

如果dll位于磁盘上的另一个项目或目录中, 而不在项目的子文件夹中,则可以“添加一个链接”,然后将它们放在根目录中。

我有与Visual Studio 2010 / C#项目相同的问题。

对于程序集(即具有.NET接口),请在解决scheme资源pipe理器的项目下使用文件夹“引用”。 右键单击它,select“添加现有的项目”,并find您的.dll程序集。

常见的.dll文件可以放在一个子文件夹中(如上面提到的“\ lib”),并在属性中select:

  • 生成操作=“HelpFiles”
  • 复制到OutputDirectory =“如果更新”

这完全符合我的需要 – 在构build过程中,将.DLL复制到输出目录而不使用“\ lib”子文件夹。