我在Mercurial中有一些存储库,其结构如下:
- 核心
- 集成
- 管理员
- MyApp
从MyApp
回购中,我希望包括Core
和Integration
。
我将这些作为子repo添加到MyApp
中,并将其放置在Externals
文件夹中。
MyApp
的文件夹结构大致如下:
MyApp
-BusinessLogic
-数据访问
-外部
--核心
--集成
-Web
-包装
这个问题与packages
文件夹有关。我在所有解决方案中都使用包还原,NuGet下载所有包都很好。文件夹包含我的外部项目所依赖的包。
唯一的问题是,从Core
和Integration
到packages文件夹的相对路径现在是错误的。
有什么办法可以解决这个问题吗?
我认为您可以手动修复它,您的引用应该具有以../../packages
开头的相对提示路径。但为了避免将来出现这种情况所有包含此项目的解决方案都必须具有相同的结构。例如,对于其他解决方案,您有如下结构:
MyOtherApp
- BusinessLogic
- DataAccess
- Externals
-- SubFolder
--- Core
--- Integration
- Web
- packages
如果在这种情况下,您将nuget包添加到Core项目中,则引用将为../../../packages/...
。CCD_ 12在其他解决方案中会再次被破坏。
另一种解决方案是从Core
和Integration
项目中制作包,并通过nuget在其他解决方案中使用它们。我的团队使用这个TeamCity,它可以打包项目,发布nuget包,并作为nuget开箱即用。
如果您仍然想将其作为子存储库(而不是将项目引用为NuGet包),您可以修改提示路径以始终搜索解决方案目录。
例如,我更改了
<HintPath>....packagesMoq.4.2.1312.1622libnet40Moq.dll</HintPath>
至
<HintPath>$(SolutionDir)packagesMoq.4.2.1312.1622libnet40Moq.dll</HintPath>