新 SDK 样式项目格式中的引用需要提示路径吗?

问题描述 投票:0回答:1

条件

  • 我正在尝试从旧的项目格式迁移到新的 SDK 样式 .csproj 格式。参见例如https://netexplorer.hashnode.dev/migration-to-an-sdk-style-project
  • .NetFramework 4.8 项目
  • 我有参考资料,但它们不是 NuGet 包,不在 GAC 中,也不是我的项目
  • 在我当前的情况下,预安装的 UFT Developer SDK
  • 我的假设是,我的问题与 UFT Developer SDK 无关,它可能是安装在任何地方的任何依赖项。除了 GAC 和 NuGet 包,由 msbuild 找到

旧式格式.csproj代码

  <Reference Include="HP.LFT.Report" />

新样式格式.csproj代码(适用于绝对和相对路径)

<Reference Include="HP.LFT.Report">
  <HintPath>C:\Program Files (x86)\Micro Focus\UFT Developer\SDK\DotNet\HP.LFT.Report.dll</HintPath>
</Reference>

为什么我需要添加新格式的hintPath?这是一个缺点,因为该路径可能会随着时间或机器的不同而改变。在旧格式中,msbuild 不知何故知道如何找到我的参考文献。有没有另一种方法告诉msbuild如何找到这些依赖项?

我知道当 msbuild 的搜索机制基本上在任何地方搜索“NewtonsoftJson.dll”时,它可能会导致错误的构建结果。但是在新格式中添加这样的引用的正确方法是什么?

我发现了一篇旧帖子,其中有一个稍微相关的问题。我不确定几年后这是否仍然是建议的解决方案:参考新 CSPROJ 格式的 GAC 程序集?

c# visual-studio msbuild .net-4.8
1个回答
0
投票

默认情况下,.NET 将在全局程序集缓存 (GAC) 和项目的输出目录中查找程序集。

官方文档:

全局程序集缓存

检查您的包裹是否在。

但在新的 sdk 样式中,此功能被删除。

您可以根据此考虑适合您情况的方式:

ResolveAssemblyReference.SearchPaths 属性

毕竟只能提供这七种。

© www.soinside.com 2019 - 2024. All rights reserved.