我怎样才能建立在Visual Studio中的一个项目来复制第三方的DLL,该项目的参考资料之一取决于?
我有一个主要的应用项目和一个类库DLL。 主要的应用程序引用类库DLL,并DLL本身引用了一些第三方的DLL。 当我编译主应用程序,它会自动复制类库DLL到它的输出目录,但它不会复制第三方的DLL。
我不想从主应用程序项目,因为主要的应用程序不使用他们,他们只使用类库添加到第三方的DLL引用。
我怎样才能建立在Visual Studio中的一个项目来复制第三方的DLL,该项目的参考资料之一取决于?
我有一个主要的应用项目和一个类库DLL。 主要的应用程序引用类库DLL,并DLL本身引用了一些第三方的DLL。 当我编译主应用程序,它会自动复制类库DLL到它的输出目录,但它不会复制第三方的DLL。
我不想从主应用程序项目,因为主要的应用程序不使用他们,他们只使用类库添加到第三方的DLL引用。
你可以用项目属性窗口实现这一目标。 Visual Studio中允许您定义发生,之前,或建成后的事件。 为了获得该项目属性窗口只需在Solution Explorer窗口中的项目上右键单击,然后单击“属性”。 从左侧进入“生成事件”选项卡。
在几个拷贝命令生成后箱型。 例如:
copy "$(SolutionDir)mydll.dll" "$(TargetDir)"
其中$(SolutionDir)
和$(TargetDir)
都是预定义变量。 标准的语法如下:
copy "source directory and file name" "destination directory"
如果你点击“编辑后生成...”按钮,将弹出一个对话框,其具有可以插入这些预定义变量的列表(如$(SolutionDir)
和$(TargetDir)
作为一个方面说明,这是其他文件复制,如自定义配置文件,图片或您的项目可能有其他任何相关性的有用的方法。
下面的片段为我工作:
<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中。
看看由Alex亚库宁提供这种解决方案http://blog.alexyakunin.com/2009/09/making-msbuild-visual-studio-to.html它的工作对我真的很好-场景被DevExpress的库明确使用了其他部署时产生的问题依赖性)
这两个步骤 - 为自动生成设置为我的间接引用复制本地=真正为引用的库和添加的MSBuild目标。
我不建议这样做。 你结束了一个N ^ 2爆炸中被复制围绕组件的数量(和潜在的,正在重建)。 如果可能的话,你应该把所有的项目将它们的组件在同一$(OUTDIR)。 如果你正在使用TFS,团队建设可以实现这个要求。
进入主应用程序,引用,给您的类库引用。
设置“复制本地”设置为True。
现在将你的类库的bin目录复制到主应用程序bin目录中。 包括任何子依赖第三方的DLL。
我不喜欢有位于项目的根文件夹,但在子文件夹我的依赖文件。 但这些文件必须放置在根文件夹中生成文件夹。
我生成的事件是这样的:
Command: call xcopy /S /Y "$(SolutionDir)Dependencies\*.*" "$(TargetDir)"
如果“相关性”也包含子文件夹,像我一样。
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>
我真的不知道任何方式做到这一点以外添加引用说的.dll项目本身。 我们在这里的一些我们自己的项目跨越这一跑,而且我们已经找到了唯一的解决办法是添加引用。 我想说的是,我们的开发商做了一些研究,发现这是唯一的解决办法,但不要可以引用我这句话。