引用的dll - dll文件名是否重要?

时间:2015-07-23 22:42:54

标签: .net visual-studio dll

我想在我自己引用的程序集中包含用于分发目的的dll名称的版本控制。例如,MyGreat.dll变为MyGreat.v2.dll。

所有MyGreat.dll版本(包括MyGreat.v.x.x.dll)中的命名空间都是MyGreat。

在Visual Studio中,我可以添加对任一文件名的引用,并且构建没有问题。使用文件名MyGreat.dll作为引用的dll,VS在调试模式下运行良好。

当我使用MyGreat.v.2.dll作为引用的dll在调试模式下运行VS时,我收到一个错误,它无法找到MyGreat.dll或其中一个依赖项等。

我可以使用命名dll浏览Visual Studio对象浏览器窗口中的dll。

我已经尝试过多种组合和可能性,我可以想到包括"或其中一个依赖项"并清理项目。

有什么想法吗?

编辑:fuslogvw结果是:

EngineSetup.getInstance().doStuff=true;

EndEdit中

1 个答案:

答案 0 :(得分:1)

你要做的事情并非不可能,但容易出错。请注意您如何查看错误的Fuslogvw.exe跟踪。这里重要的设置是Project>属性>类库项目中的“应用程序”选项卡:

enter image description here

程序集名称是使用程序集嵌入其元数据的其他项目。你可以用ildasm.exe看到的东西,双击清单:

.assembly extern 'ClassLibrary1.v1.2.3.5'
{
  .ver 1:2:3:5
}

在文件名中嵌入版本号可以做的任何其他事情,比如在磁盘上重命名文件,都会导致您描述的问题。

使用带有类库的项目引用的解决方案也非常非常重要。如果不这样做并使用文件引用,那么更改程序集名称将破坏使用类库的任何项目,您必须删除该引用并将其添加回来。

重新发明GAC可能不是最好的主意。请注意它如何解决这个问题,看看c:\ windows \ microsoft.net \ assembly with Explorer,它将程序集存储在文件夹中,其名称取决于版本号