首页 > 解决方案 > 如何修复引用特定 NuGet 包交付的 dll 版本(VS2017)的托管 C++ 程序集

问题描述

我正在构建一个托管 c++ dll (udnet.dll),它引用了 Nuget 包交付的 dll

包.config

<packages>
  <package id="ForeignLanguage" version="2.0.5" allowedVersions="[2,3)" />
</packages>

在完整构建中使用时,ForeignLanguage.dll 的实际版本是 2.0.6,因为自从构建 udnet.dll 以来,它有一个小错误修复。

但是,加载 udnet.dll 时会失败,因为它正在寻找 2.0.5

在此处输入图像描述

如何构建 udnet.dll,这样它就不会对 ForeignLanguage 的版本那么挑剔?如果主要版本不匹配,我真的希望它失败。即(2.0.0.0)

标签: c++visual-studio-2017nuget

解决方案


问题出在 ForeignLanguage.dll,我没有在 AssemblyInfo.cpp 中将 AssemblyVersion 设置为 2.0.0.0

#define VER_FILE_VERSION_STR STRINGIZE(GITVERSION_Major) \
"." STRINGIZE(GITVERSION_Minor) \
"." STRINGIZE(GITVERSION_Patch) \
".0"

#define VER_VERSION_STR STRINGIZE(GITVERSION_Major) \
".0.0.0"

[assembly:AssemblyVersion(VER_VERSION_STR)];
[assembly:AssemblyFileVersion(VER_FILE_VERSION_STR)];

推荐阅读