gpt4 book ai didi

.net - 为什么 list 中包含引用 DLL 的多个版本?

转载 作者:行者123 更新时间:2023-12-01 04:21:32 27 4
gpt4 key购买 nike

我正在使用面向 .Net 2.0 的 MSBuild v3.5 构建 .Net 解决方案。

我们正在升级以使用 Crystal 11.5,因此我更新了源代码管理树中的二进制文件,以包含 11.5 版 DLL 而不是 10.0 DLL。

在项目中,我引用了一些 Crystal Reports DLL。这是项目文件的一个小例子:

<Reference Include="CrystalDecisions.ReportAppServer.ClientDoc, Version=10.0.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\Third Party\CrystalReports\CrystalDecisions.ReportAppServer.ClientDoc.dll</HintPath>
</Reference>
<Reference Include="CrystalDecisions.ReportAppServer.CommonControls, Version=10.0.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\Third Party\CrystalReports\CrystalDecisions.ReportAppServer.CommonControls.dll</HintPath>
</Reference>

但是,当我查看 list 时,它显示 ClientDoc 被引用了两次,即使它不在项目中两次:
.assembly extern CrystalDecisions.ReportAppServer.ClientDoc
{
.publickeytoken = (69 2F BE A5 52 1E 13 04 ) // i/..R...
.ver 11:5:3300:0
}
.assembly extern CrystalDecisions.ReportAppServer.ClientDoc as CrystalDecisions.ReportAppServer.ClientDoc_20
{
.publickeytoken = (69 2F BE A5 52 1E 13 04 ) // i/..R...
.ver 10:0:3300:0
}

我尝试修改项目中的引用以指定版本 11.5.3300.0 并将特定版本设置为 True。这些都没有帮助,我仍然得到一个引用两个版本的 list 。

为什么这两个版本都包含在 list 中?当所有其他 DLL 以相同的方式使用相同的提示路径指定时,为什么这只会发生在 ClientDoc.DLL 上?

另外,如果以这种方式发货,fusion 将首先尝试使用哪个版本?似乎在我们测试的一台机器上,我们可能会出现一个错误,即未找到版本 10.0.3000.0... 11.5 在机器上。在另一台机器上它似乎工作正常。

最佳答案

经过大量的游戏、谷歌搜索和使用反射器后,我终于弄清楚了这里发生了什么。

该项目有一个 DLL 引用,指向我们的一个通用框架 DLL,该框架 DLL 仍在使用 10.x 版本的 Crystal 报告 DLL 构建。因此,除了直接指向和引用的版本之外,该版本的引用似乎还添加到引用 DLL 的 list 中。

当我用 11.5 版本的 Crystal 二进制文件重建那个通用 DLL 时, list 现在正确地只列出 11.5 版本。

关于.net - 为什么 list 中包含引用 DLL 的多个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1499406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com