3

NuGetパッケージを作成しています。contentユーザーがこのパッケージをインストールしたときに追加されるexeファイルとconfigファイルの2つのファイルをフォルダーに入れました。

さらに、これら2つのファイルのVSプロジェクトのプロパティを変更したいと思います。

パッケージをビルドするときに、そのために何をする必要がありますか?

4

1 に答える 1

4

「プロパティ変更を適用する」とは、最終変更時刻、非表示フラグなどのファイルシステムプロパティを意味しますか?

その場合、実行されるPowerShellスクリプトのセットがあります(パッケージに存在する場合)。これを使用してこれを行うことができます。パッケージをビルドするときは発生しませんが、誰かがパッケージをインストールするときに実行されます。これは、ユーザーの観点からは同じ効果があるはずです。おそらくまたはのいずれかがInit.ps1必要Install.ps1です。

NuGetドキュメントでのパッケージのインストールおよび削除中にPowerShellスクリプトを自動的に実行することから:

パッケージには、パッケージのインストールまたは削除時に自動的に実行されるPowerShellスクリプトを含めることができます。NuGetは、次の規則を使用して、ファイル名に基づいてスクリプトを自動的に実行します。

  • Init.ps1パッケージがソリューションに初めてインストールされたときに実行されます。
    • 同じパッケージがソリューション内の追加のプロジェクトにインストールされている場合、それらのインストール中にスクリプトは実行されません。
    • このスクリプトは、ソリューションが開かれるたびにも実行されます。たとえば、パッケージをインストールし、Visual Studioを閉じてから、Visual Studioを起動してソリューションを開くと、Init.ps1 スクリプトが再度実行されます。
  • Install.ps1パッケージがプロジェクトにインストールされたときに実行されます。
    • ソリューション内の複数のプロジェクトに同じパッケージがインストールされている場合、パッケージがインストールされるたびにスクリプトが実行されます。
    • パッケージInstall.ps1を実行するには、コンテンツまたはlibフォルダーにファイルが含まれている必要があります。ツールフォルダに何かがあるだけでは、これは始まりません。
    • パッケージにもが含まれている場合は、の後init.ps1install.ps1実行されinit.ps1ます。
  • Uninstall.ps1パッケージがアンインストールされるたびに実行されます。
  • これらのファイルは、パッケージのツールディレクトリにある必要があります。
  • ファイルの先頭に、次の行を追加します。param($installPath, $toolsPath, $package, $project)
    • $installPathパッケージがインストールされているフォルダへのパスです
    • $toolsPathパッケージがインストールされているフォルダ内のツールディレクトリへのパスです。
    • $packageパッケージオブジェクトへの参照です。
    • $projectEnvDTEプロジェクトオブジェクトへの参照であり、パッケージがインストールされているプロジェクトを表します。注:これはでnullになりますInit.ps1。その場合、ソリューションレベルで実行されるため、特定のプロジェクトへの参照はありません。このオブジェクトのプロパティは、MSDNドキュメントで定義されています。
  • スクリプトの作成中にコンソールでテストする場合は$project、次のように設定できます。$project = Get-Project
于 2011-12-09T15:52:23.250 に答える