19

私はgitから2つのサブモジュールを含むプロジェクトを持っています。両方のプロジェクトで、親プロジェクトでも「nuget パッケージの復元」が有効になっています。含まれている 2 つのサブモジュールのパッケージ フォルダーはチェックインされておらず、チェックアウトされたプロジェクトには存在しません。親プロジェクトをビルドするとき、Nuget はサブフォルダー内のパッケージを復元しようとしますが、間違ったパッケージ フォルダーに復元しようとします!

"C:\Dev\git\oasisdb\odb_oasis_repository\ODB_OASIS_Repository\.nuget\NuGet.exe" install "C:\Dev\git\oasisdb\odb_oasis_repository\odb_oasis_rvm\ODB_OASIS_RVM_EF\ODB_OASIS_RVM_EF\packages.config" -source ""  -NonInteractive -RequireConsent -solutionDir "C:\Dev\git\oasisdb\odb_oasis_repository\ODB_OASIS_Repository\ "

サブモジュールのソリューション ディレクトリで nuget が復元されないのはなぜですか?

ありがとう

4

4 に答える 4

19

Nuget は、開いているソリューション ディレクトリにパッケージを復元しています。

サブモジュール プロジェクトの .csproj を編集し、次のパッケージ dll 参照を変更できます。

   <ItemGroup>
    <Reference Include="Microsoft.Rest.ClientRuntime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.Rest.ClientRuntime.2.1.0\lib\net45\Microsoft.Rest.ClientRuntime.dll</HintPath>
      <Private>True</Private>
    </Reference>

に :

 <ItemGroup>
<Reference Include="Microsoft.Rest.ClientRuntime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>$(SolutionDir)\packages\Microsoft.Rest.ClientRuntime.2.1.0\lib\net45\Microsoft.Rest.ClientRuntime.dll</HintPath>
  <Private>True</Private>
</Reference>

この助けを願っています!

于 2016-03-22T03:46:07.557 に答える
9

答えが見つかりました: 興味のある方は:

http://www.xavierdecoster.com/how-to-nuget-package-restore-when-sharing-projects-between-solutions

NuGet が不足しているパッケージを取得しない

于 2013-09-04T09:36:16.430 に答える
5

シンボリック リンクを使用できます。nuget がすべてのパッケージをソリューションのpackagesディレクトリにダウンロードした後、サブモジュールのルート ディレクトリにシンボリック リンクを作成します (名前packagesとソリューション レベルpackagesディレクトリへのリンク)。つまり、スタートアップ プロジェクトで、ソリューションpackagesディレクトリとすべてのサブモジュールpackagesディレクトリの間にシンボリック リンクを作成する Pre-Build イベントを追加します。

これはバッチです:

SET sourceDir=$(SolutionDir)packages
SET destDir=$(SolutionDir)..\..\submodules\saturn72\src\packages

if not exist %sourceDir% mkdir %sourceDir%

if not exist %destDir% mklink /j %destDir% %sourceDir%

完全な説明とソース コード: SolutionWithGitSubmodulesAndNuget

于 2017-05-11T18:27:49.813 に答える