复制DLL在Visual Studio中的依赖复制DLL在Visual Studio中的依赖(Cop

2019-05-13 19:53发布

我怎样才能建立在Visual Studio中的一个项目来复制第三方的DLL,该项目的参考资料之一取决于?

我有一个主要的应用项目和一个类库DLL。 主要的应用程序引用类库DLL,并DLL本身引用了一些第三方的DLL。 当我编译主应用程序,它会自动复制类库DLL到它的输出目录,但它不会复制第三方的DLL。

我不想从主应用程序项目,因为主要的应用程序不使用他们,他们只使用类库添加到第三方的DLL引用。

Answer 1:

你可以用项目属性窗口实现这一目标。 Visual Studio中允许您定义发生,之前,或建成后的事件。 为了获得该项目属性窗口只需在Solution Explorer窗口中的项目上右键单击,然后单击“属性”。 从左侧进入“生成事件”选项卡。

在几个拷贝命令生成后箱型。 例如:

copy "$(SolutionDir)mydll.dll" "$(TargetDir)"

其中$(SolutionDir)$(TargetDir)都是预定义变量。 标准的语法如下:

copy "source directory and file name" "destination directory"

如果你点击“编辑后生成...”按钮,将弹出一个对话框,其具有可以插入这些预定义变量的列表(如$(SolutionDir)$(TargetDir)

作为一个方面说明,这是其他文件复制,如自定义配置文件,图片或您的项目可能有其他任何相关性的有用的方法。



Answer 2:

下面的片段为我工作:

<Project>
  ...
  <ItemGroup>
    <Content Include="Path\to\dll\dllname.dll">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  ...
</Project>

这适用于C#。 对于本机C ++仍然DLL复制到输出文件夹,但这种依赖是不是在Visual Studio中可见的,应当在项目文件中直接编辑。

为了测试对非平凡例如我试图运行依赖于本地C ++项目B.乙项目C#项目A依赖于第三方机DLLÇ - 这种依赖性在项目文件经由片段实现以上。 当我建立A,C被复制到文件夹中的二进制。

我试图在Visual Studio 2010中。



Answer 3:

看看由Alex亚库宁提供这种解决方案http://blog.alexyakunin.com/2009/09/making-msbuild-visual-studio-to.html它的工作对我真的很好-场景被DevExpress的库明确使用了其他部署时产生的问题依赖性)

  • 注1:Visual Studio 2010中似乎自动添加引用的DLL,但是MSBuild的没有。 所以亚历克斯的解决方案,因为使用的MSBuild发布的脚本工作。
  • 注2:还必须确保对引用的库(那些是在代码中引用)复制本地中的csproj实际上是设置为True,即使Solution Explorer中说,这是。 最好的办法是设置复制本地=假,保存,集抄本地=真,保存。

这两个步骤 - 为自动生成设置为我的间接引用复制本地=真正为引用的库和添加的MSBuild目标。



Answer 4:

我不建议这样做。 你结束了一个N ^ 2爆炸中被复制围绕组件的数量(和潜在的,正在重建)。 如果可能的话,你应该把所有的项目将它们的组件在同一$(OUTDIR)。 如果你正在使用TFS,团队建设可以实现这个要求。



Answer 5:

进入主应用程序,引用,给您的类库引用。

设置“复制本地”设置为True。

现在将你的类库的bin目录复制到主应用程序bin目录中。 包括任何子依赖第三方的DLL。



Answer 6:

我不喜欢有位于项目的根文件夹,但在子文件夹我的依赖文件。 但这些文件必须放置在根文件夹中生成文件夹。

我生成的事件是这样的:

 Command: call xcopy /S /Y "$(SolutionDir)Dependencies\*.*" "$(TargetDir)"

如果“相关性”也包含子文件夹,像我一样。



Answer 7:

100%肯定这会工作。 只是你个人的参考替换DLL。 文件

<Reference Include="Xceed.Wpf.Toolkit">
  <HintPath>..\..\..\3rdParty\Extended WPF Toolkit-2.2.1\Xceed.Wpf.Toolkit.dll</HintPath>
   <CopyToOutputDirectory>Always</CopyToOutputDirectory>   
   <SpecificVersion>False</SpecificVersion> 
</Reference>

<Content Include="..\..\..\3rdParty\Extended WPF Toolkit-2.2.1\Xceed.Wpf.Toolkit.dll">
  <Link>Xceed.Wpf.Toolkit.dll</Link>
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  <SpecificVersion>False</SpecificVersion>
</Content>


Answer 8:

我真的不知道任何方式做到这一点以外添加引用说的.dll项目本身。 我们在这里的一些我们自己的项目跨越这一跑,而且我们已经找到了唯一的解决办法是添加引用。 我想说的是,我们的开发商做了一些研究,发现这是唯一的解决办法,但不要可以引用我这句话。



文章来源: Copying a DLL's dependencies in Visual Studio