2010-04-19 49 views
2

形势的MSBuild覆盖项目引用解析为预编译大会

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

我分支了3个感兴趣的项目,并且由于独立团队使用diff SVN回购,我使用svn externals将这些项目拖入独立应用程序的文件夹中。显然,由于该团队使用不同的文件夹结构,项目引用不再解决。

尝试性解决方案

我想通设置的MSBuild特性ReferencePathAdditionalLibPaths指向一个目录,所有的预编译的依赖将使项目引用回退点和正确解决。然而,看起来并非如此。

问题

  • 有谁知道一个办法有一个 失败projectreference 决心仰望预编译的dll?
  • 也许指向我的自动工具 将projectreferences转换为dll 引用?
  • 或者有没有更好的方法来解决这个问题?

感谢

回答

2

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

你可以用许多方法解决这个问题,比如有一个将旧项目文件路径映射到已解析的程序集路径的目标[1],并将其添加到FooItem [2]中。或者,您可以将“all precompiled deps”中的所有文件添加到@(ReferencePath)中。参考路径在之后填充,因此它具有所有最终路径。向它添加搜索路径将无济于事。

  1. 而这个目标添加到ResolveReferencesDependsOn财产

  2. 的GetTargetPath电话应加入返回的路径一些项目名称,通过该项目的名称替换FooItem。