gpt4 book ai didi

MSBuild 不获取被引用项目的引用

转载 作者:行者123 更新时间:2023-12-03 21:24:54 24 4
gpt4 key购买 nike

我刚才在使用 MSBuild 时遇到了一个奇怪的情况。有一个解决方案包含三个项目:LibX、LibY 和 Exe。 Exe 引用了 LibX。 LibX 又引用了 LibY,有一些内容文件,还引用了第三方库(安装在 GAC 和本地 lib 文件夹中的几个预构建程序集)。第三方库被标记为“复制本地”(“私有(private)”)并出现在 LibX 项目的输出中,就像 LibY 的输出和 LibX 的内容文件一样。现在,Exe 项目的输出有 LibX 项目输出、LibX 项目的内容文件、LibY 项目输出(来自 LibX),但没有第三方库的程序集。

现在我通过直接在 Exe 项目中引用第三方库来解决这个问题,但我不觉得这是一个“正确”的解决方案。

以前有人遇到过这个问题吗?

最佳答案

与使用 Visual Studio 构建相比,使用 MSBuild(即命令行、TFS Build 和其他工具)构建时的行为存在差异。辅助引用不包含在发送到 MSBuild 编译任务的引用变量中。

MSBuild 提供了几个扩展点来更改解析引用的方式。我已经成功地使用 AfterResolveReference 为我的一些项目解决了这个问题 - I have posted more info about the background on my blog .

解决方法是将以下代码添加到您的 vbproj 或 csproj 文件中

  <Target Name="AfterResolveReferences">
<!-- Redefine referencepath to add dependencyies-->
<ItemGroup>
<ReferencePath Include="@(ReferenceDependencyPaths)">
</ReferencePath>
</ItemGroup>
</Target>

Microsoft 已声明这不会在 Connect 上修复。

关于MSBuild 不获取被引用项目的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/137229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com