MSBuild覆盖项目参考以解析为预编译的程序集

时间:2010-04-19 14:42:03

标签: visual-studio-2008 msbuild build-process build

场合

我使用项目引用大约有400个csproj文件。其中大约3个单独的团队想要分叉并合并到一个独立的应用程序中。

我对3个感兴趣的项目进行了分支,并且因为单独的团队使用了差异SVN repo,所以我使用svn externals将这些项目引入独立应用程序的文件夹中。显然,由于该团队使用不同的文件夹结构,项目引用不再解析。

尝试解决方案

我认为将msbuild属性ReferencePathAdditionalLibPaths设置为指向一个目录,其中所有预编译的依赖项将允许项目引用回退点并正确解析。然而,情况似乎并非如此。

问题

  • 有没有人知道如何拥有 项目参考失败了 解析为预编译的dll?
  • 也许会指向一个自动化工具 将projectreferences转换为dll 引用?
  • 或者有更好的方法可以解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:3)

项目引用由目标 - ResolveProjectReferences解析。它基本上在引用的项目上调用GetTargetPath,并将其用作已解析的项目程序集路径。 IIUC,您的项目文件路径在新设置中不正确,因此GetTargetPath将失败。

您可以通过多种方式解决此问题,例如将目标[1]映射到已解析的程序集路径,并将其添加到FooItem [2]。或者您可以将“所有预编译的deps”目录中的所有文件添加到@(ReferencePath)。在分辨率之后,将填充ReferencePath,因此它具有所有最终路径。添加搜索路径无济于事。

  1. 并将此目标添加到ResolveReferencesDependsOn属性

  2. GetTargetPath调用应该将返回的路径添加到某个项目名称,用该项目名称替换FooItem。

答案 1 :(得分:-2)

项目文件(csproj)是XML文件,如果需要进行任何操作,可以编写自己的工具: