Visual studio 2008 VS2008.NET:获取引用的项目';要复制到主项目的依赖项';垃圾箱文件夹

Visual studio 2008 VS2008.NET:获取引用的项目';要复制到主项目的依赖项';垃圾箱文件夹,visual-studio-2008,dll,user-controls,reference,Visual Studio 2008,Dll,User Controls,Reference,假设我有一个C#Winforms项目MainGUI 它引用了同一解决方案中的另一个项目ControlsLib ControlsLib引用第三方控件套件,如Infragistics或Telerik控件,并公开一组在MainGUI中使用的用户控件 在ControlsLib中的所有引用上,Copy Local设置为true,所有第三方DLL显示在ControlsLib\bin\release中 但是,我无法让第三方DLL自动复制到MainGUI\bin\release,该文件夹是生成软件安装程序的文件

假设我有一个C#Winforms项目MainGUI

它引用了同一解决方案中的另一个项目ControlsLib

ControlsLib引用第三方控件套件,如Infragistics或Telerik控件,并公开一组在MainGUI中使用的用户控件

在ControlsLib中的所有引用上,Copy Local设置为true,所有第三方DLL显示在ControlsLib\bin\release中

但是,我无法让第三方DLL自动复制到MainGUI\bin\release,该文件夹是生成软件安装程序的文件夹(在本例中使用NSIS)

因此,安装中不包括第三方控制DLL,这导致在运行时使用依赖于第三方DLL的ControlsLib控件时出现FileNotFoundException

有没有一种我不知道的“正确”的方法?以前我只是在nant构建脚本中通过复制文件来处理这个问题,但我正在启动一个新项目,我只是想检查一下


谢谢

您需要从UI项目(MainGUI)添加指向必要文件的链接,并将它们设置为从那里复制到输出文件夹。内置的打包工具(IIRC)可以正确地级联这些功能,但是对于外部工具,我希望您需要手动执行


在我的构建服务器上,我使用一个脚本来调查引用,并在构建之前添加所有子代引用(通过将csproj文件编辑为xml)。。。代码不是很好,但它确实起到了作用。

我在使用温柔的.NET(O/R映射器)时也遇到过类似的问题。其中一个DLL拒绝复制。我已经调查了好几个小时,找不到原因。正在复制所有其他文件,但由于某些奇怪的原因,该文件被排除在外。 Little使用了三个DLL,分别是little.Common.DLL、little.Framework.DLL和little.SQLProvider.DLL。最后一个永远不会被复制


最后,我简单地编写了一个脚本…

我刚刚解决了这个问题,将以下生成后事件命令行添加到MainGUI的.csproj文件中(项目属性->生成事件)


我没有意识到这样做其实很容易…

如果修改“发布”选项“应用程序文件”选项卡上的主要项目属性(可执行属性),则可以告诉VS包含所有未被复制的文件

copy $(SolutionDir)ControlsLib\bin\$(ConfigurationName)\Infragistics2*.dll $(TargetDir)