2017-01-03 6 views
1

カスタムビルドステップ(生成されたアセンブリを分析し、メタデータを自動的に生成する)を含むナゲットパッケージを作成することは可能ですか?ターゲット環境は、新しい.csproj形式の(現在はVisual Studio 2017 RCを使用している).NETコアである必要があります。最良のケースは、msbuildの手順だけを追加し、アセンブリを生成するプロジェクトに依存しない場合です。.NETコアのカスタムビルドステップを含むナゲットパッケージを作成する

完全な.NETで可能であるはずですが、msbuildと.NETコア用の新しい.csprojのドキュメントは現時点では少しばかりです。

+0

これを行う方法は、[組み込み対象のインポート](http://stackoverflow.com/a/ 25513519/517852)。コアプロジェクトでは機能しているかどうかはわかりませんが、なぜそうはならないのか分かりません。インストールスクリプトを使用するよりもずっと簡単です。 –

答えて

1

Nugetは、インストール時にnugetパッケージで見つかると "init.ps1" powershellスクリプトを実行することがあります。ただし、Nuget 3.xでスクリプトのサポートが変更されています。

Nuget 3.xxでは、PowerShellスクリプトのサポートがインストールおよびアンインストールスクリプト(install.ps1、uninstall.ps1)を実行しなくなるように変更されましたが、 initスクリプトはまだ実行されています。

また、コマンドラインや他のオペレーティングシステムでVisual Studio以外でNuGetを実行すると、Visual Studioの自動化に依存しているため、これらのPowershellスクリプトを実行できません。 PowerShellは、NuGetの機能を利用してVisual Studio内で機能が不足するのを防ぐシムを提供します。 Powershellスクリプトサポートは、インストールスクリプトとアンインストールスクリプトを実行しなくなりましたが、initスクリプトは実行されません。

hereは、「Powershellのインストールとアンインストールスクリプト」でもっと見ることができます。

+0

情報ありがとうございます。リファレンスとして使用できるカスタムビルドステップを追加するナゲットパッケージについて知っていますか?おそらく.NETコア用ですか? – Fionn

2

"build"フォルダ内のNuGetパッケージにMSBuildターゲットを追加できます。ターゲットまたは小道具のファイル名は、パッケージIDと一致する必要があります。 "PackageReference"またはpackages.configを介してインストールすると、NuGetは自動的にターゲット/ propsファイルをcsprojにインポートするので、これらのファイルは有効なMSBuildコードとして書き込まれなければなりません。たとえば、

(package root) 
    lib/ 
     netstandard1.3/ 
      MyClassLibrary.dll 
    build/ 
     netstandard1.3/ 
      MyClassLibrary.props 
      MyClassLibrary.targets 

NuGet.orgかとGitHubの上でそのsource codeMicrosoft.Extensions.Configuration.UserSecretsを参照してください。あなたのパッケージが「MyClassLibrary」と命名された場合

はつまり、あなたは次のようなレイアウトを持つことができます。このパッケージは、MSBuildターゲットを使用して、コンパイルの前に自動的にアセンブリ属性を生成します

関連する問題