Visual StudioにすべてのソリューションではなくソリューションごとにNuGetパッケージソース構成を適用させる方法を知っている人はいますか?それぞれが独自のプライベートNuGetリポジトリを持つ複数のプロジェクトに取り組んでいるため、バージョン管理の問題が発生し続けています。どのNuGetリポジトリがどのプロジェクトに属しているかを覚えて、戻って正しいプロジェクトに正しいリポジトリを適用し続けるのは***の苦痛です。
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ドキュメントを読むと、すべてが明らかになります。以下で提供するソリューションを使用すると、単一のVisualStudioソリューションの構成をすばやく指定できます。
<?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を入れていることを確認AREN 「tはこれらのパッケージのソースを使用するには、この共通のフォルダに含まれていません。
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="MyCompanyPackageSource" value="\\server\NuGet\MyCompany" /> </packageSources> </configuration>
BenAlabasterが提供する優れた回答に追加したいと思います。私は幾分反対の問題を抱えていました:
同社は、デフォルトでグローバルにすべてのソリューションを使用するために、カスタムのプライベートnugetフィードを構成し、そして私が使用した「プロトタイプ」アプリを作りたかった公共nugetフィードを。
これ(そのソリューションのディレクトリ内)を使用すると、パブリック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でパブリックフィードを意図的に無効にしたため、上向きに無効にされたフィードをすべてクリアすることでした。