我有一个视觉工作室的解决方案。 我在解决方案中有许多项目。 有一个主要项目作为启动,并使用其他项目。 有一个项目叫“ProjectX”。其参考资料添加到主项目中。 ProjectX引用了另一个. net dll(例如abc.dll),它不是解决方案的一部分。

现在这个abc.dll应该被复制到主项目的bin/debug文件夹中,但它没有被复制到那里。为什么没有被复制,有什么已知的原因吗?


当前回答

将DLL作为现有项添加到其中一个项目中,应该对其进行排序

其他回答

这是对nvirth示例的轻微调整

internal class DummyClass
{
    private static void Dummy()
    {
        Noop(typeof(AbcDll.AnyClass));
    }
    private static void Noop(Type _) { }
}

只是佐格领主回答的旁注。

我以这种方式添加了虚拟引用,它在调试模式下工作:

public class DummyClass
{
    private static void Dummy()
    {
        var dummy = typeof(AbcDll.AnyClass);
    }
}

但是在发布模式下,依赖的dll仍然没有被复制。 然而,这奏效了:

public class DummyClass
{
    private static void Dummy()
    {
        Action<Type> noop = _ => {};
        var dummy = typeof(AbcDll.AnyClass);
        noop(dummy);
    }
}

这个信息其实花了我好几个小时才弄明白,所以我想分享一下。

您可以将主项目和ProjectX的构建输出路径设置为相同的文件夹,然后您可以在该文件夹中获得所需的所有dll。

我有一个类似的问题,其中一个DLL我已经包括在项目作为内容和“复制始终”设置,没有被复制到bin文件夹。我通过在app.config中添加一个dependentAssembly引用来解决这个问题。

确保您使用的依赖DLL的目标. net框架不高于项目应用程序的目标. net框架。

你可以通过选择你的项目来检查,然后按ALT+ENTER,然后从左边选择Application,然后选择项目的目标框架。

假设, 依赖DLL目标框架= 4.0和 应用程序DLL目标框架= 3.5然后将其更改为4.0

谢谢你!