Visual Studio 2013参考地狱-一直在查找不存在的DLL的较旧版本-为什么?

时间:2018-10-23 17:31:44

标签: c# visual-studio dll visual-studio-2013

我有一些放置在共享驱动器上的源代码,该代码映射到F驱动器上。

我在这里构建了一大堆程序集:F:\ Development \ OurProject \ Assemblies \ Projects \ Release

在此文件夹中的特定dll: Common.Themes.dll (以及相应的Common.Themes.pdb)。我昨晚刚刚执行了完整构建,所以两者的日期都为10/22/2018 7:47 PM。该dll的产品版本和文件版本为5.0.6869.33817

在我开发的这个VM中,我有一个C:驱动器。我只是在此驱动器中搜索了Common.Themes.dll,因此可以将其从此C:驱动器中删除。我什至关闭了所有项目,以便可以删除在这里找到的所有dll:C:\ Users \ justlook \ AppData \ Local \ Microsoft \ VisualStudio \ 12.0 \ ProjectAssemblies

我还从以下位置删除了所有内容:C:\ Users \ justlook \ AppData \ Local \ Temp \

此dll / pdb在此计算机上的唯一实例在这里:C:\ Users \ justlook \ Documents \ Visual Studio 2013 \ Projects \ MyThemeTest \

Anyhoo ...

在此F驱动器上,这里有以下解决方案:F:\ Development \ OurProject \ UserProfiles \ UserProfiles.sln

在此解决方案中,我们在此处有两个项目文件\文件夹:

F:\ Development \ OurProject \ UserProfiles \ UserProfiles

F:\ Development \ OurProject \ UserProfiles \ TestContainer

在打开解决方案之前,我从两个位置删除了bin / obj文件夹(TestContainer是启动项目-并且UserProfiles未引用此DLL)。

正如我提到的,TestContainer确实引用Common.Themes.DLL。今天早上,我已经删除了引用,并通过多次浏览/导航到Assemblies文件夹来重新添加了引用。

打开解决方案后,将重新创建bin / obj文件夹,如果我转到TestContainer的bin文件夹,则所有引用都将立即放置在那里。目前,我看到日期为10/22/2018 7:47 PM的 Common.Themes.DLL 。太好了!

我去按绿色播放按钮(以调试/构建项目),它也显示绿色播放按钮旁边的Internet Explorer,因为它将默认打开IE。

在VS完成构建之后,我在TestContainer \ bin文件夹中查找,然后将10/22/2018 7:47 PM dll替换为一个日期为 10/9/2018 8:40 PM

的文件>

pdb为10/22/2018 7:47 PM,但dll为10/9/2018,大小不同(显然)且版本不同(5.0.6856.35405)。较旧的版本。这是唯一执行此操作的文件。

为什么这样做呢???我无法停止。我没有从何处以及如何获得它的想法。

谢谢。

1 个答案:

答案 0 :(得分:2)

好的,根据@Caius Jard所说的话,我在解决方案目录中进行了“文件查找”。令我惊讶的是,TestContainer .csproj具有Common.Theme引用了两次。

当我重新添加参考文献时,我看到它得到了更新:

<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="Common.Controls, Version=5.0.5493.35273, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\Assemblies\Projects\Release\Common.Controls.dll</HintPath>
</Reference>
<Reference Include="Common.Themes, Version=5.0.6869.33817, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\Assemblies\Projects\Release\Common.Themes.dll</HintPath>
</Reference>

所有正确的版本,并且HintPath使用相对路径。凉。这就是我检查.csproj文件时的重点。

但是现在我意识到,如果我滚动到底部,我会看到:

<ItemGroup>
  <CustomReference Include="Gizmox.WebGUI.Forms">
    <HintPath>F:\Development\AWayOlderVersion\UserProfiles\TestContainer\bin\Gizmox.WebGUI.Forms.dll</HintPath>
    <Visible>false</Visible>
  </CustomReference>
  <CustomReference Include="Gizmox.WebGUI.Forms.Themes">
    <HintPath>F:\Development\AWayOlderVersion\UserProfiles\TestContainer\bin\Gizmox.WebGUI.Forms.Themes.dll</HintPath>
    <Visible>false</Visible>
  </CustomReference>
  <CustomReference Include="Common.Themes">
    <HintPath>F:\Development\AnOlderVersion\UserProfiles\TestContainer\bin\Common.Themes.dll</HintPath>
    <Visible>false</Visible>
  </CustomReference>
</ItemGroup>

F:\ Development \ AnOlderVersion \ ...仍然存在。所以它是从那里拉出来的。

我不明白为什么会有这些“ CustomReferences”,并且在删除该ItemGroup(所以所有三个customreference)之后,它似乎工作正常。