Visual Studio中的奇怪引用行为

时间:2017-06-02 17:08:45

标签: c# visual-studio

我有一个MVC应用程序,在那里我添加了2个对我写的dll类库项目的引用。

当我清理解决方案时,其中一个dll文件会按预期删除,但另一个文件会保留。这是为什么?

在项目XML中,这里是参考文献

<Reference Include="BusinessLayer">
  <HintPath>..\BusinessLayer\bin\Debug\BusinessLayer.dll</HintPath>
</Reference>
<Reference Include="DataTypes">
  <HintPath>..\DataTypes\bin\Debug\DataTypes.dll</HintPath>
</Reference>

如您所见,我在每个项目的bin / debug文件夹中引用了生成的dll文件。

当我右键单击解决方案并选择“清理”时,业务层dll不会删除。

如果我右键单击该引用并单击“属性”,则“路径”设置为本地文件,它位于我所在项目的bin文件夹中,而不是在其自己的bin文件夹中。

有谁知道如何解决此问题?

1 个答案:

答案 0 :(得分:0)

通过执行以下操作,我能够重现这种确切的行为:

  1. 使用2个项目(ClassLibrary1和ClassLibrary2)创建新的解决方案
  2. 构建解决方案
  3. 在ClassLibrary1
  4. 的bin文件夹中手动复制ClassLibrary2.dll
  5. 将ClassLibrary1项目中的引用添加到ClassLibrary1的bin文件夹中的ClassLibrary2 dll
  6. 现在,当我重建或清理解决方案时,ClassLibrary1 bin文件夹中的ClassLibrary2.dll不会被删除。

    偶然发生了类似的事吗? (可能不是完全相同的步骤)。

    在这种情况下,在bin文件夹中手动删除有问题的dll,在Visual Studio中删除引用并再次添加它,但这次指向正确的位置。

    正如Jeff在评论中提到的,如果项目在同一个解决方案中,请添加对项目的引用而不是dll文件(添加引用/项目)。

    另一方面,如果其他库不是此解决方案的一部分,我会为它们创建一些NuGet包,我将在我的网络上的共享文件夹上托管,这将允许您通过NuGet和旁路添加依赖项手动添加对dll的引用。