条件
- 我正在尝试从旧的项目格式迁移到新的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?
1条答案
按热度按时间ao218c7q1#
默认情况下,.NET将在全局程序集缓存(GAC)和项目的输出目录中查找程序集。
官方文件:
Global Assembly Cache (GAC)
的数据
看看你的包裹在不在。
但在新的sdk风格,这一功能将下降。
您可以根据以下情况考虑适合您的方式:
ResolveAssemblyReference.SearchPaths Property的
毕竟,只有这七种类型可以提供。