プロジェクト内のすべてのソリューションで共通のパッケージディレクトリを持つようにNuGetを設定する現在の推奨方法は何ですか?また、異なるプロジェクト間で共通のフォルダにPCLパッケージを含める方法もあります(異なるプラットフォームを対象とするプロジェクト間でパッケージを共有できるようにする)。私はこれまでに尋ねられた同様の質問を見たことがありますが、NuGetの最新バージョンに関する明確な答えは見つかりません。複数のプロジェクトとソリューション間で共有されるNuGetパッケージ
答えて
すべてのソリューションの共通祖先であるディレクトリにnuget.configファイルを含めると、Visual Studioでこれらのソリューションを開くと、この構成ファイルを使用してNuGetを構成します。
nuget.configの設定の1つは、ソリューションのnugetパッケージフォルダの場所です。
参考:https://docs.nuget.org/consume/nuget-config-file
サンプルnuget.config:repositoryPath
はnuget.configファイルの場所に関するものであることに注意してください。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<add key="enabled" value="True" />
</packageRestore>
<config>
<add key="repositoryPath" value="packages" />
</config>
</configuration>
disableSourceControlIntegrationオプションをtrueに設定して、すべてのsoltuionsにNuGet.Configファイルがあります。私はまだこれらの設定ファイルを保持する必要がありますか、またはそれらを取り除き、ルートディレクトリの設定を使用することはできますか? – user2481095
あなたは1つだけ必要です。ただし、ソリューションのうちの1つだけに異なる構成が必要な場合は、そのソリューションのディレクトリにnuget.configファイルを含めて、異なる設定にしてください。残りの構成設定はすべて、ルートディレクトリの1つの設定から取得されます。 –
わかりました。 http://docs.nuget.org/consume/package-restoreからのこの行が私を混乱させたので私は尋ねる。「このナゲット。設定ファイルをソリューションファイルに追加する必要はありませんが、解決レベルで動作するためには$(SolutionDir)\。nugetフォルダに置く必要があります。 " – user2481095
場合、誰がこの出くわす、ここで私が問題を解決する方法である: ジョン・カーペンターは正しい方向に私を操縦。私はNugetのwesiteにあるいくつかの情報もあります: これを達成するためにhttps://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
IオーウェンジョンソンのPowerShellのマイグレーション・スクリプト は、ここで彼のスクリプトへのリンクです、編集:私にとって https://github.com/owen2/AutomaticPackageRestoreMigrationScript
スクリプトはかなりありませんでした十分な網羅性があり、プロジェクトファイルのヒントパスを修正していない(問題)。 *コードのコピーがどこかに保存されていない場合、またはソース管理でこのコードを実行しないでください。これがあなたのプロジェクトを壊すかどうかは保証されません。 ここで私が使用するスクリプトは次のとおりです。
########################################
# Regex Patterns for Really Bad Things!
$listOfBadStuff = @(
#sln regex
"\s*(\.nuget\\NuGet\.(exe|targets)) = \1",
#*proj regexes
"\s*<Import Project=""(\$\(SolutionDir\))?(\d|\w|\s|\.|\\)*(\.nuget|package).*?/>",
"\s*<Target Name=""(EnsureNuGetPackageBuildImports|EnsureBclBuildImported)""(.|\n)*?>(.|\n)*?</Target>",
"\s*<RestorePackages>\w*</RestorePackages>",
#HintPaths
"\s*<HintPath>(\$\(SolutionDir\))?(\d|\w|\s|\.|\\)*package.*?</HintPath>"
)
#######################
# Delete NuGet.targets and package folders
ls -Recurse -include 'NuGet.exe','NuGet.targets','NuGet.config' |
foreach {
remove-item $_ -recurse -force
write-host deleted $_
}
#########################################################################################
# Fix Project and Solution Files to reverse damage done by "Enable NuGet Package Restore
ls -Recurse -include *.csproj, *.sln, *.fsproj, *.vbproj, *.wixproj, *.vcxproj |
foreach {
sp $_ IsReadOnly $false
$content = cat $_.FullName | Out-String
$origContent = $content
foreach($badStuff in $listOfBadStuff){
$content = $content -replace $badStuff, ""
}
if ($origContent -ne $content)
{
$content | out-file -encoding "UTF8" $_.FullName
write-host messed with $_.Name
}
}
私はhintpathsを削除するには、コマンドを追加しました。スクリプトを実行すると、いくつかのパッケージにヒントパスが必要なため、いくつかのNugetエラーが発生することがあります。これらを修正するには、それらのパッケージを再インストールする必要があります。だから私は、完全な移行を実行するためにかかった手順 http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html
: 1)あなたのコードベースのルートレベルにPowerShellスクリプトを実行しますNugetウェブサイト上の次のリンクは、これを行う方法を示します。 2)NuGet.configファイルをコードベースのルートに追加します(テンプレートとしてJohn Carpenterが提供するものを使用してください)。 3)ヒントパスを必要とするパッケージを再インストールします(Nugetエラーを修正する必要があります)。 4)ソリューションをビルドすると、Nugetはパッケージを中央のパッケージフォルダに配置する必要があります。
- 1. xamarin共有プロジェクトでnugetパッケージを使用する方法
- 2. NuGetと複数のソリューション
- 3. 複数のプロジェクト間でxmlとデータを共有する
- 4. 複数のプロジェクト間で共通のパッケージを使用するベストプラクティス
- 5. 共有プロジェクト、複数のソリューション、同じGitリポジトリ
- 6. 複数のプロジェクトを単一のNuGetパッケージにパッケージ化する
- 7. Visual Studioソリューションから複数のNugetパッケージを作成する
- 8. 複数のNugetプロジェクトを1つのソリューションで扱う
- 9. VS2017複数のプロジェクトテンプレートと共有プロジェクト
- 10. 複数のプロジェクト間でC#app.configを共有する
- 11. 複数のプロジェクト間でインスタンスを共有する
- 12. 複数のEmberプロジェクト間でコンポーネントを共有する方法
- 13. 複数のプロジェクト間でコアコードベースを共有する
- 14. プロジェクト間で共有されるTFS 2017変数グループ
- 15. Wix Toolset - プロジェクト間で共有される変数
- 16. ソリューション内のプロジェクトのディレクトリを復元するnugetパッケージ
- 17. プロジェクト間のNugetパッケージの依存関係
- 18. 複数のプロジェクト間で共通のファイルを共有する方法
- 19. 複数のターゲット間で共有される時計アプリ
- 20. Eclipse:複数のプロジェクト間でコードを共有
- 21. 複数のXcode + PhoneGapプロジェクト間でコードを共有
- 22. Maven - プロジェクト間でパッケージを作成し共有する
- 23. 1つのソリューションで複数のプロジェクトから1つのNuGetパッケージを作成する
- 24. 複数のmvc 3プロジェクト間でビューを共有することが可能
- 25. プロジェクト間でコードベースを共有
- 26. 別のソリューション間で共通のオブジェクトを共有する方法
- 27. ドメイン間の共有データ - ドメイン間で共有されるデータ
- 28. 共有Visual C++プロジェクト間の変数
- 29. Eclipseプロジェクト間で共有されるクラスのパッケージプライベートフィールドへのアクセス
- 30. 複数のアプリケーション間でデータベースを共有
私の解決策があなたのために働いたかどうか、または質問がある場合は教えてください:) –