2

Mercurialには、次の構造のリポジトリがいくつかあります。

  • 統合
  • 管理者
  • MyApp

リポジトリから、MyAppとを含めたいと思いCoreますIntegration

それらをサブリポジトリとしてに追加し、フォルダMyApp内に配置します。Externals

のフォルダ構造MyAppはおおまかに次のようになります。

MyApp
-BusinessLogic
-DataAccess
-Externals
-Core
-Integration
-Web
-packages

問題はpackagesフォルダに関係しています。私はすべてのソリューションでパッケージ復元を使用していますが、NuGetはすべてのパッケージを正常にダウンロードします。このフォルダーには、外部プロジェクトが依存するパッケージが含まれています。

唯一の問題は、packagesフォルダーCoreとの間の相対パスが間違っていることです。Integration

これを解決する方法はありますか?

4

2 に答える 2

2

手動で修正できると思います。参照には、で始まる相対的なヒントパスが必要../../packagesです。ただし、将来これを回避するには、このプロジェクトを含むすべてのソリューションが同じ構造である必要があります。たとえば、他のソリューションの場合、次のような構造になります。

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

この場合、nugetパッケージをコアプロジェクトに追加すると、参照はになります../../../packages/...。そしてCore、他のソリューションで再び壊れます。

Core他のソリューションは、プロジェクトからパッケージを作成Integrationし、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 に答える