首页 > 解决方案 > 通配符版本项目依赖

问题描述

开始使用 .net 核心。我们在一个文件夹中有很多 dll,其中包含多年来开发的整个软件解决方案。其中一部分开始使用 .net 核心。我们过去常常将带有几个修改过的 dll 的补丁发布到具有递增版本号的生产环境中。显然 .net core 正在检查依赖 dll 的确切版本,所以当我们发布一个带有 .net core dll 所依赖的修改过的 dll 的补丁时,应用程序将不会开始写入无法加载文件或程序集 xxx.dll,版本 = 1.2 的错误.3.4.

我们使用项目依赖项。csproj 文件

是否可以覆盖版本检查以仅比较版本的前 2 位数字或完全跳过版本检查(我们在软件中有自己的 dll 版本检查系统)?

标签: c#.netvisual-studio.net-coremsbuild

解决方案


强引用(在 .csproj 文件中)如下所示:

<Reference Include="MyLibrary, Version=2.9.4.2, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
  <HintPath>..\lib\lib\net40\MyLibrary.dll</HintPath>
</Reference>

当 DLL 丢失时,您将收到您描述的错误。为了避免这种情况,您完全删除了版本号。我称之为弱引用:

<Reference Include="MyLibrary">
  <HintPath>..\lib\lib\net40\MyLibrary.dll</HintPath>
</Reference>

如果您控制所有内容,那么弱引用就可以了。但要小心这些。MSBuild 倾向于查看整个计算机。所以最好有一个准确的<HintPath>


推荐阅读