2

我在 Mercurial 中有几个存储库,其结构如下:

  • 一体化
  • 行政
  • 我的应用

MyApprepo 中,我想包含Coreand Integration

我将它们作为子存储库添加到MyApp,并将其放在Externals文件夹中。

文件夹结构MyApp大致如下:

MyApp
- BusinessLogic
- DataAccess
- Externals
- 核心
- 集成
- Web
- 包

问题与packages文件夹有关。我在所有解决方案中都使用包还原,并且 NuGet 可以正常下载所有包。该文件夹包含我的外部项目所依赖的包。

唯一的问题是,包文件夹的相对路径Core现在Integration是错误的。

有什么办法可以解决这个问题吗?

4

2 回答 2

2

我认为您可以手动修复它,您的引用应该具有以../../packages. 但是为避免将来出现这种情况,所有包含此项目的解决方案都必须具有相同的结构。例如,对于其他解决方案,您的结构如下:

MyOtherApp
- BusinessLogic
- DataAccess
- Externals
-- SubFolder
--- Core
--- Integration
- Web
- packages

如果在这种情况下您将 nuget 包添加到 Core 项目,则引用将是../../../packages/.... 并且Core将再次在其他解决方案中被打破。

其他解决方案是从项目中制作包,CoreIntegration通过 nuget 在其他解决方案中使用它们。我的团队使用这个 TeamCity,它可以打包项目、发布 nuget 包并作为 nuget 开箱即用。

于 2012-08-28T13:26:49.533 回答
1

如果您仍想将其保留为子存储库(而不是将项目引用为 NuGet 包),您可以修改提示路径以始终搜索解决方案目录。

例如,我改变了

<HintPath>..\..\packages\Moq.4.2.1312.1622\lib\net40\Moq.dll</HintPath>

<HintPath>$(SolutionDir)packages\Moq.4.2.1312.1622\lib\net40\Moq.dll</HintPath>
于 2014-03-17T15:51:52.160 回答