.net - 项目引用DLL版本hell

标签 .net visual-studio-2008 assemblies reference dll

我们在让Visual Studio从我们的项目之一中获取DLL的最新版本时遇到了问题。

我们有多个类库项目(例如BusinessLogic,ReportData)和许多Web服务,每个项目都有对我们编写的连接DLL的引用(此问题是对连接DLL的引用)。

我们总是将指向DLL的引用放在bin / debug文件夹中(这是我们始终为任何给定项目构建的位置),并且所有自定义DLL引用都具有CopyLocal = True和SpecificVersion = False

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

奇怪的是,当您单击“添加引用”并浏览到Connectivity / bin / debug-将鼠标悬停在DLL文件上时,将显示正确的(最新)版本(版本和文件版本始终一起增加),但是当您单击确定时,将拉出以前的版本号。即使当我查看当前项目的调试文件夹(在编译后,本地复制将在其中放置DLL的文件夹)中也显示了最新的版本号。 -我无法在Visual Studio之外找到DLL的先前版本,但是在该项目引用中它具有旧版本-即使路径正确。

我对从哪里获取旧版本不知所措。甚至是为什么它想要那个。

这可能是我遇到的最棘手的问题。

有谁知道如何确保最新版本(最好是自动生成或编译生成)通过。

编辑:

尽管我正在处理的场景不完全是我在阅读this文章,但它在某处提到了有关CLR忽略修订号的信息。可以理解的(即使以前不是问题-我们的修订版为39),所以我认为我将更新内部版本号,但仍然无法正常工作。尽管我徒劳地尝试更新次要版本号,看看是否有任何区别。

我并不是说这是答案,因为我必须首先检查很多事情,但是从表面上看,这似乎已经解决了我的问题...

进一步编辑:
在其他类库中,这似乎已经解决了问题,但是在测试Windows应用程序中,它仍然通过:(

如果我再次增加次要版本号,则会再次出现相同的问题,但我会留下错误的版本。

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

任何人以前都遇到过这个问题,知道如何解决吗?

救命!

最佳答案

为了避免dll的麻烦,我建议您在项目内创建一个lib文件夹,并将所有共享程序集放在此文件夹中。接下来,您只能从此文件夹添加引用。这样,您的项目就可以独立完成,并且您确切地知道它从哪里选择引用。如果要使用较新版本更新某些程序集,请将其复制到lib文件夹中并重新生成项目。

还要确保您没有将引用的程序集放入GAC,因为它们可能会首先被拾取。

关于.net - 项目引用DLL版本hell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2357476/

相关文章:

c++ - 如何强制 C++ 编译器使用特定的 CRT 版本?

c# - 将远程调试器附加到几乎立即崩溃的进程

.net - 如何将 CC.NET 自动构建版本戳写入全局程序集信息文件并由多个 .NET 应用程序引用?

.net - 根命名空间和程序集名称之间的区别

C#.NET : How do I create a new instance of a class based solely on a "Type" object?

c# - 为什么这段调整 .NET 窗体高度的代码会使窗体太小?

visual-studio - VS 2008 或 2010 Express 版本是否附带任何可用的控制台 http 下载实用程序?

c# - 需要什么 RedisCacheOptions.InstanceName ?

c# - 需要从 Xamarin 中的选取器中选择至少一项

c# - 业务逻辑分离