Visual Studioで、すべてのソリューションではなくソリューションごとにNuGetパッケージソース構成を適用する方法を知っている人はいますか?それぞれ独自のプライベートNuGetリポジトリを持つ複数のプロジェクトで作業しているため、バージョン管理の問題が発生し続けています。 ***では、どのNuGetリポジトリがどのプロジェクトに属しているかを思い出し、戻って正しいプロジェクトに正しいものを適用し続けるのは面倒です。
TLDR:はい
NuGetは、WindowsユーザープロファイルのレベルでNuGet.configから始まり、ソリューションを含むファイルパスのルートで始まり、最終的にはソリューションファイル。
だからここに私が見つけ出したものがあります-この文書を教えてくれる有用なツイッターの好意による:
https://docs.nuget.org/consume/nuget-config-file
Visual StudioのTools > NuGet Package Manager > Package Manager Settings: Package Sources
オプションでNuGetパッケージソースを編集すると、%APPDATA%\NuGet
ディレクトリにあるNuGet.configファイルにデフォルトでそれらの変更が適用されます。ソリューションごと(またはソリューションのグループごと)にこれらの設定をオーバーライドするには、1つまたは複数のソリューションのパスに沿って戦略的に配置されたNuGet.configファイルを追加する必要があります。
NuGetドキュメントを読むとすべてが明確になります。以下で提供するソリューションを使用すると、単一のVisual Studioソリューションの構成をすばやく指定できます。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
<packageSources>
<!-- Ditch all the Global NuGet package sources we only want a
single private NuGet repo for this project -->
<clear />
<!-- Add the private NuGet package source for this solution -->
<add key="My Private NuGet Server" value="http://myprivatenuget.com:8080/nuget" />
</packageSources>
<disabledPackageSources>
<!-- Add any package sources to ignore here using the same keys as
defined in the packageSources list above-->
<!--<add key="nuget.org" value="true" />-->
<add key="Microsoft and .NET" value="true" />
</disabledPackageSources>
</configuration>
構成を複数のソリューションに適用する場合は、ソリューションフォルダーがすべて共通のディレクトリに含まれていることを確認し、その共通のディレクトリにあるそれらのソリューションに関連するパッケージソースのNuGet.configを配置します。 are n'tこれらのパッケージソースを使用するには、この共通フォルダーに含まれていません。
BenAlabasterが提供する優れた答えに追加したいと思います。私は幾分反対の問題がありました:
会社は、デフォルトですべてのソリューションで使用するためにカスタムのプライベートnugetフィードをグローバルに設定しましたが、 public nuget feed 。
これにより(そのソリューションのディレクトリ内で)、パブリックnugetフィードは私の特定のソリューションでのみ利用可能になりますが、会社のフィードは他のすべてのソリューションのデフォルトのままです:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!-- Ditch all eventually upwards configured (private) feeds from an (enterprise) environment -->
<clear />
<!-- Make sure we use the public nuget -->
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
<disabledPackageSources>
<!-- Ditch all eventually upwards configured (private) feeds from an (enterprise) environment -->
<clear />
</disabledPackageSources>
</configuration>
キーは、%APPDATA%\ NuGetのNuGet.configでパブリックフィードを意図的に無効にしたため、上向きに無効化されたすべてのフィードをクリアすることでした。