我在Mercurial中有一些存储库,具有以下结构:
从MyApp
回购,我想要加入Core
和Integration
。
我将这些作为子回购添加到MyApp
,并将其放在Externals
文件夹中。
MyApp
的文件夹结构大致如下:
MyApp的
- BusinessLogic
- DataAccess
- 外部人员
- 核心
- 整合
- 网站
- 包
问题与packages
文件夹有关。我在所有解决方案中使用包恢复,NuGet可以很好地下载所有包。该文件夹包含我的外部项目所依赖的包。
唯一的问题是,从Core
和Integration
到包文件夹的相对路径现在是错误的。
有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
我认为您可以手动修复它,您的引用应该具有以../../packages
开头的相对提示路径。但是为了避免将来所有,包含此项目的解决方案必须具有相同的结构。
例如,对于其他解决方案,您具有以下结构:
MyOtherApp
- BusinessLogic
- DataAccess
- Externals
-- SubFolder
--- Core
--- Integration
- Web
- packages
如果在这种情况下您将nuget包添加到Core项目,则引用将为../../../packages/...
。 Core
将再次在其他解决方案中被打破。
其他解决方案是来自Core
和Integration
项目的make包,并通过nuget在其他解决方案中使用它们。我的团队使用这个TeamCity,它可以打包项目,发布nuget包,并作为nuget feed out the box。
答案 1 :(得分: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>