c# - 通配符版本项目依赖
问题描述
开始使用 .net 核心。我们在一个文件夹中有很多 dll,其中包含多年来开发的整个软件解决方案。其中一部分开始使用 .net 核心。我们过去常常将带有几个修改过的 dll 的补丁发布到具有递增版本号的生产环境中。显然 .net core 正在检查依赖 dll 的确切版本,所以当我们发布一个带有 .net core dll 所依赖的修改过的 dll 的补丁时,应用程序将不会开始写入无法加载文件或程序集 xxx.dll,版本 = 1.2 的错误.3.4.
我们使用项目依赖项。csproj 文件
是否可以覆盖版本检查以仅比较版本的前 2 位数字或完全跳过版本检查(我们在软件中有自己的 dll 版本检查系统)?
解决方案
强引用(在 .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>
。
推荐阅读
- java - mysql中的float和double数据类型不存储我的java程序所需的完整数字
- objective-c - 如何在我的应用程序外部获取鼠标位置的文本(无需单击和拖动并选择)?
- python - 在 keras 模型中使用预训练的词嵌入?
- python - 为什么类对象中的 tf.Variable 无法初始化?
- c# - 使用 MemoryMappedFile 将 2 个数组从 CreateFileMappingW 共享到 C#
- android - 如何在不使用数据库的情况下将项目添加到 Listview?
- wordpress - 如何从 Facebook 应用程序中提取评论
- python - 为什么列表反转返回None?在python中
- mongodb - 如何在 MongoDB shell 中将 NumberDecimal 转换为 Double?
- objective-c - 如何将 int 从 iPhone 发送到 Apple Watch 标签(objective-c)