NuGet.Core を使用して NuGet パッケージを作成するにはどうすればよいですか?
-
25-10-2019 - |
質問
NuGet パッケージ NuGet.Core を利用するアプリケーションを作成したいと考えています。これを可能にする PackageBuilder というクラスがあります。利用可能なサンプル/チュートリアル/ドキュメントはありますか?
解決
NuGet.Core を使用して NuGet パッケージを構築する方法に関するチュートリアルやドキュメントを知りません。代わりに、NuGet.exe のソース コードを見てみましょう。それは パック .nuspec ファイルからパッケージを構築するコマンド。の PackCommand クラス, PackageBuilder クラスを使用する、何を行う必要があるかを示します。
他のヒント
本当に簡単な例:
- パッケージに必要なファイルを含むフォルダーを作成します。
このようなコードを書く:
ManifestMetadata metadata = new ManifestMetadata() { Authors = "mauvo", Version = "1.0.0.0", Id = "myPackageIdentifier", Description = "A description", }; PackageBuilder builder = new PackageBuilder(); builder.PopulateFiles("folderPath/", new[] {new ManifestFile() {Source = "**"}}); builder.Populate(metadata); using(FileStream stream = File.Open(packagePath, FileMode.OpenOrCreate)) { builder.Save(stream); }
Davidのコードに基づいた改善された例。変更:
- *.nuspecを除くフォルダー内のすべてのファイルがパッケージに追加されます。
パッケージファイル名を定義する行。
ManifestMetadata metadata = new ManifestMetadata() { Authors = "mauvo", Version = "1.0.0.0", Id = "myPackageIdentifier", Description = "A description", }; PackageBuilder builder = new PackageBuilder(); var files = Directory.GetFiles(packagePath, "*", SearchOption.AllDirectories) .Where(f => !f.EndsWith(".nuspec")) .Select(f => new ManifestFile { Source = f, Target = f.Replace(path, "") }) .ToList(); builder.PopulateFiles("", files); builder.Populate(metadata); string packageFile = Path.Combine(packagePath, builder.GetFullName()) + ".nupkg"; using(FileStream stream = File.Open(packageFile, FileMode.OpenOrCreate)) { builder.Save(stream); }
所属していません StackOverflow