2016-07-27 4 views
1

私たちは、溶液中で、次のプロジェクト構造を持っています。ナゲットは、複数のソリューションで参照されているか、それとも単独で使用されていますか?

\ Project2の
\ Project1の

のProject2がProject1のに依存しています。 Project1は複数のプロジェクトで共有されます。このソリューションの一部であったときに、Project1のためのナゲットパッケージ(Roslynなど)を追加しました。

This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ../../Project2/packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props. 

を私はそれがで次たstatmentsを持っているテキストエディタでプロジェクトファイルを開く場合は、次のは完全に別のアプリでそれが失敗したときに我々が抱えている問題は、私たちは、それ自体でのProject1をコンパイルするか、それをコンパイルしようとするいずれかの場合プロジェクトファイル:

<Import Project="..\..\Project2\packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\Secured Account Access\Member\packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.props')" /> 

もちろんすべてnugetの参照を削除してからちょうど個々のプロジェクトを開き、nugetの参照を追加した場合。これは、プロジェクトをコンパイルしようとしたときに修正され、ソリューションの一部であったときに破損しました。なぜなら、VSはProject1のパッケージをソリューション内に復元しなくなるからです。

VS/Nugetがこのように動作する理由はわかりません。常にプロジェクトごとにパッケージフォルダを持っているわけではないのですか?ディスクスペース節約(これは絶対に何もないでしょう)?

../../Project2/Packages/MyNugetDepedency.dll 

これを回避してすべてを動作させる方法はありますか?

+0

私はあなたがNuGet経由でのProject1を参照するとよいでしょうとは思いません。それを通常のProject Referenceを介して参照してください。 – Andy

+0

@andy。私はそれを少し明確にする必要があります。私はナゲット経由でProject1を参照していません。そのプロジェクトのリファレンス。私は、例えばroslynのようなnuget.orgのnugetパッケージを参照しているだけです。 – coding4fun

+0

ああそうです。親ディレクトリのproject1と2の両方にSLNファイルが必要であるように見えます。これはproject1/2フォルダと同じレベルのパッケージを持つはずです。 – Andy

答えて

2

パッケージフォルダは、プロジェクトがデフォルトで含まれているソリューションによって決定されます。 NuGet.ConfigファイルにrepositoryPathを指定すると、デフォルトのパッケージディレクトリを上書きできます。

<configuration> 
    <config> 
    <add key="repositoryPath" value="../MyPackages" /> 
    </config> 
</configuration> 

複数のソリューションにあなたがすべてのソリューションへの親であるディレクトリに、リポジト設定で、NuGet.Configファイルを作成することができ、同じパッケージディレクトリをすべてのシェアを持っています。 NuGetは、NuGet.Configファイルを見つけてそこに定義されているrepositoryPathを使用するまで、各ディレクトリの上に移動します。このrepositoryPathは、フルパスを指定していない限り、NuGet.Configファイル自体に相対的です。相対パスはおそらくあなたが望むものなので、他の開発者がソースコードを同じディレクトリにチェックアウトする必要はありません。

関連する問題