Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 项目引用DLL版本_.net_Visual Studio 2008_Assemblies_Reference_Dll - Fatal编程技术网

.net 项目引用DLL版本

.net 项目引用DLL版本,.net,visual-studio-2008,assemblies,reference,dll,.net,Visual Studio 2008,Assemblies,Reference,Dll,让visual studio从我们的一个项目中获取最新版本的DLL时遇到问题 我们有多个类库项目(例如BusinessLogic、ReportData)和许多web服务,每个都有一个对我们编写的连接DLL的引用(这个对连接DLL的引用就是问题所在) 我们总是将引用指向bin/debug文件夹中的DLL(对于任何给定的项目,我们总是在该文件夹中编译),并且所有自定义DLL引用都具有CopyLocal=True和SpecificVersion=False ReportData引用了业务逻辑(也引用了

让visual studio从我们的一个项目中获取最新版本的DLL时遇到问题

我们有多个类库项目(例如BusinessLogic、ReportData)和许多web服务,每个都有一个对我们编写的连接DLL的引用(这个对连接DLL的引用就是问题所在)

我们总是将引用指向bin/debug文件夹中的DLL(对于任何给定的项目,我们总是在该文件夹中编译),并且所有自定义DLL引用都具有CopyLocal=True和SpecificVersion=False

ReportData引用了业务逻辑(也引用了连接性-我不明白为什么这会导致问题,但我认为值得一提)

奇怪的是,当您单击“添加引用”并浏览到Connectivity/bin/debug时,将鼠标悬停在DLL文件上,会显示正确的(最新)版本(版本和文件版本总是一起递增),但当您单击“确定”时,会拉取以前的版本号。即使我查看当前项目调试文件夹(编译后复制本地将在其中放置DLL),其中显示最新版本号。-在visual studio之外的任何地方都找不到以前版本的DLL,但在该项目引用中,它具有旧版本—即使路径是正确的

我不知道从哪里可以得到旧版本。甚至是为什么它想要那个

这可能是我遇到的最令人沮丧的问题

是否有人知道如何确保最新版本能够顺利通过(最好是自动或编译时)

编辑:

虽然不完全是我正在处理的场景,但我正在阅读这篇文章,其中提到CLR忽略了修订号。可以理解(尽管这以前不是问题-我们在第39版),所以我想我会更新版本号,但仍然不起作用。在一次徒劳的尝试中,我想我会更新次要版本号,看看这是否有什么不同

我不是说这是答案,因为我必须先检查很多东西,但从表面上看,这似乎解决了我的问题

进一步编辑: 在其他类库中,这似乎已经解决了问题,但是在测试windows应用程序中,它仍然通过以下方式使用以前的版本:(

如果我再次增加次要版本号,同样的问题会再次出现,我只剩下错误的版本

进一步编辑-我创建了一个全新的项目,添加了一个引用,但仍然存在完全相同的问题。这表明问题仅限于我引用的项目。希望我知道原因

以前有人有过这个问题,知道如何解决吗

帮助!

为了避免dll地狱,我建议您在项目中创建一个
lib
文件夹,并将所有共享程序集放在该文件夹中。接下来,您只能从此文件夹添加引用。这样,您的项目是自包含的,并且您确切地知道它从何处拾取引用。如果您想更新某些程序集,请在更新版本中,您可以将其复制到
lib
文件夹中,然后重新生成项目


另外,请确保不要将引用的程序集添加到GAC中,因为它们可能会首先被拾取。

您是否尝试将引用添加为项目引用?即添加引用…->“项目”选项卡->选择您的项目

您可以尝试的选项很少

  • 编译项目并在输出窗口中查看,以验证引用它的程序集路径
  • 在重新编译Obj文件夹之前删除它
  • 关闭并重新打开Visual Studio,因为VS有一些奇怪的行为来保持缓存以保存Dll引用
  • 如果仍然看到问题,请使用此工具检查参考部件的来源

  • 为了克服这个问题,我删除了所有的引用,然后重新添加它们。我不知道为什么这是解决方案

    在一个项目中,一个DLL可能不正确,而正是这个不正确的DLL被VisualStudio拉过并使用

    编辑: 发生此错误的其他时间是由于当前项目中引用的DDL(a)也被其他DLL(B)引用。不重建此其他DLL(B)似乎会阻止VS在当前项目中引用正确版本的DLL(a),从而导致DLL(a)的旧版本。

    (作为我们团队中唯一的.NET开发人员,我指的是我)有完全相同的问题。我追踪到一个被引用的dll,它反过来又引用了遭受版本监控的dll。似乎因为我没有更新所有引用dll的引用,所以在构建过程中的某个时候,它被旧版本替换了

    我经历的一个症状是,当我在代码编辑器中时,我添加到引用项目中的新类将被适当地着色,但当我点击Build时,它会变回黑色,我收到一条消息,说该类不存在(以及一条非常讽刺的“Ar you missing a assembly reference?”)。这使我相信问题必须发生在构建阶段


    因此,我建议构建指向此DLL的任何其他项目,并重新添加它们的引用。

    启用FusionLog,在加载DLL失败后,在文件夹C:\FusionLog\Default\devenv.exe中打开带有DLL名称的文件。这将显示实际加载DLL的路径

    就我而言,一个旧版本神秘地出现在

    C:\Program Files\Microsoft Visual Studio 10\Common7\IDE


    为了防止这种情况再次发生,我向Common7\IDE上的每个人都添加了一条安全规则“拒绝写入”。

    我遇到了一个类似于此处所述的问题,只是我的问题解决方案与我如何