2016-04-12 25 views
2

私たちは依存関係のすべてのフェッチをNugetに移そうとしています。私たちは独自のカスタムパッケージソースとデフォルトのnuget.orgソースを使用しています。私たちは、nuget.orgに存在する同じ名前/バージョンのパッケージを持つカスタムパッケージを持っています。Nuget、カスタムパッケージソース、および重複したパッケージ名/バージョンによる自動パッケージ復元

VS2013とVS2015では、2つのパッケージソース(custom nuget.org)とnuget 2.7+自動パッケージ復元を有効にするようにパッケージマネージャ設定を更新しました。私は私が私のボックスにVS2013でソリューションを再構築するとき、それはすべての引き下げ状況に遭遇しました

<!-- nuget.config --> 
<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <config> 
    <add key="repositorypath" value="c:\nuget\packages" /> 
    </config> 
    <packagesources> 
    <add key="customsource" value="http://custom.url/nuget" /> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    </packagesources> 
</configuration> 

:私はまた、パッケージのソースが含まれている当社のソリューションのルートにnuget.configファイルを追加しましたカスタムソースからの重複した名前/バージョンのパッケージ。しかし、私たちが別の人のマシン上でソリューションを再構築すると、カスタムソースを無視して、設定がマシン上で同じであれ、nuget.orgからすべてを試してみるように見えます。

VS2015でソリューションを再構築しようとすると、カスタムソースを無視して、名前/バージョンが重複しているパッケージをnuget.orgから取得するようです。

コマンドラインでnuget.exe 2.8.2を使用すると、すべてが期待通りに機能し、カスタムソースをリストの最初に残す限り、パッケージは正常に動作します。コマンドラインでnuget.exe 3.3.0を使用すると、自分のカスタムソースから自分の複製パッケージを取得するために、ソースリストの最後にカスタムソースを置く必要があります。カスタムソースがリストの最初のものである場合、nuget 3.3.0はすべての重複パッケージをnuget.orgからリストアします。

私のテストでは、復元を試みる前にすべてのナゲットキャッシュをクリアしました。

誰もがこの問題に遭遇しましたか?その場合、どのように問題を解決しましたか?

+0

」.... – leppie

答えて

0

まあ、私は問題を修正したようです。まず、私のソリューションのルートにあるnuget.configファイルを次のように変更しました。

<!-- nuget.config --> 
<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <config> 
    <add key="repositorypath" value="c:\nuget\packages" /> 
    </config> 
    <packageRestore> 
    <add key="enabled" value="True" /> 
    <add key="automatic" value="True" /> 
    </packageRestore> 
    <packagesources> 
    <add key="customsource" value="http://custom.url/nuget" /> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    </packagesources> 
    <activePackageSource> 
    <add key="All" value="(Aggregate source)" /> 
    </activePackageSource> 
</configuration> 

次に、別のナゲットを見つけました。Cの下に配置設定:\ユーザーは、次のように見えたExitusLSU \のAppData \ローミング\ Nugetを\:

nugetパッケージが復元開始時のVisual Studio、このファイルからの読み取りとnugetを無視したことが表示されます
<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageRestore> 
    <add key="enabled" value="True" /> 
    <add key="automatic" value="True" /> 
    </packageRestore> 
    <packagesources> 
    <add key="customsource" value="http://custom.url/nuget" /> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    </packagesources> 
    <activePackageSource> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    </activePackageSource> 
</configuration> 

。設定ファイルを作成します。 Visual Studio内でパッケージソースの並べ替えを試みたときに、ソースniget.configファイルでソースの順序が更新されることはありませんでした。私は "ローミング" nuget.configファイルを削除し、Visual Studioを再起動しました。 「ローミング中の」nuget.configが再作成されましたが、基本的にファイルには何もありません。さて、ソリューションnuget.configが正しく更新され、パッケージソースが正しく読み込まれていました。

私の質問にお答えし、助けてくださった皆様に感謝します!

1

短期的には、パッケージマネージャコンソールを開き、適切なパッケージソースを選択してパッケージを復元してみてください。

Package Manager Console Snapshot

長期的には、修飾子のいくつかの並べ替えを使用して内部供給にパッケージを前置してみてください。たとえば、packageの代わりに<your company name>.packageを実行します。これにより、パッケージの名前付けに関する問題が解決されます。

一般的には、パッケージをソース管理にチェックインすることをお勧めします。こうすることで、最新のものを入手している開発者は、コードを構築するためにできるだけ早く設定することができます。この哲学の詳細は、manyblogpostsでご覧いただけます。基本的に、モデルは、あなたがコードを構築するために必要ならば、でチェックしてください。そうすれば、プロジェクトをダウンロードするフィードを知っているすべての開発者に頼るのではなく、正しいフィードからパッケージを更新することだけを心配する必要があります。

関連する問題