【发布时间】:2015-09-05 19:08:54
【问题描述】:
我有一个 .NET 应用程序,它的一些依赖版本似乎在调试和作为已安装的发布应用程序运行之间发生了变化。我将只关注 Castle.Core 程序集的详细信息,但同样的问题也发生在其他几个问题上。我正在使用的 NuGet 包需要 Castle.Core 作为依赖项(我的所有问题都与源自 NuGet 的程序集有关,以防万一)。
在 Visual Studio 中,当我安装带有 Castle.Core 依赖项的 NuGet 包时,一切运行良好,无论是在调试配置中还是在发布配置中。我可以看到 Castle.Core 项目参考引用的是 3.3.0.0 版本。但是,当我使用 InstallShield 打包发布配置生成的所有内容并安装应用程序时(所有程序集都位于同一程序目录中),我收到此运行时错误:
无法加载文件或程序集“Castle.Core,版本=3.2.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' 或其之一 依赖关系。定位程序集的清单定义不 匹配程序集引用。 (HRESULT 异常:0x80131040)
NuGet 包将其对 Castle.Core 的依赖列为 (≥3.2.0.0 &&
如果我手动将 Castle.Core 降级到 3.2.0.0,我的项目参考显示它确实已降级。但是当我在 Visual Studio 中运行该项目时,我得到:
无法加载文件或程序集“Castle.Core,版本=3.3.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' 或其之一 依赖关系。定位程序集的清单定义不 匹配程序集引用。 (HRESULT 异常:0x80131040)
内部例外:
无法加载文件或程序集“Castle.Core,版本=3.2.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' 或其之一 依赖关系。定位程序集的清单定义不 匹配程序集引用。 (HRESULT 异常:0x80131040)
但是,如果我随后将其打包到安装程序中并将其作为已安装的应用程序启动,它就可以工作。
对我来说,将程序集打包到安装程序中的行为会导致依赖版本发生变化。我无法想象会出现这种情况,但我无法找到更好的解释。
谁能解释这里发生了什么以及我可以如何解决它?
【问题讨论】:
标签: .net visual-studio dependencies installation .net-assembly