Visual Studio 新的SDK风格项目格式中的引用需要提示路径?

6vl6ewon  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(168)

条件

  • 我正在尝试从旧的项目格式迁移到新的SDK风格的.csproj格式。
  • .NetFramework 4.8项目
  • 我有引用,不是NuGet包,不在GAC中,也不是我的项目
  • 在我目前的情况下,预安装的UFT Developer SDK
  • 我的假设是,我的问题与UFT Developer SDK无关,它可能是安装在任何地方的任何依赖项。

旧式格式.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”时都会导致错误的构建结果。但是在新格式中添加这样的引用的正确方法是什么呢?
我发现了一个旧帖子,其中有一个稍微相关的问题。我不确定多年后,这是否仍然是建议的解决方案:Reference GAC assemblies in new CSPROJ format?

ao218c7q

ao218c7q1#

默认情况下,.NET将在全局程序集缓存(GAC)和项目的输出目录中查找程序集。
官方文件:
Global Assembly Cache (GAC)


的数据
看看你的包裹在不在。
但在新的sdk风格,这一功能将下降。
您可以根据以下情况考虑适合您的方式:
ResolveAssemblyReference.SearchPaths Property
毕竟,只有这七种类型可以提供。

相关问题