これは、NuGetパッケージに含まれるファイルを取得しようとしている人々がよく読んでいるのとは反対の問題です。私はを停止しようとしていますファイルが自動的に含まれています。NuGet Pack:デフォルトは無視されます。
私は、コンパイル済みのMVCビューテンプレート(RazorGenerator.Mvcを使用)、.less
ファイル、JavaScriptを必要に応じてサポートするライブラリを作成しています。アイデアは、これらがすべてのサイトに入る基本的なものであるということです。任意の新しく作成されたビュー、.less
ファイル、またはスクリプトは次のようになり、プロジェクトのコンテンツを、:デフォルトでは
、nuget pack
は、いずれかのファイルがビルドアクションマークされています。 この動作を無効にするオプションはないようです。ここで関連する質問はempty <files>
node in the .nuspec
to stop all includesの解決策を示しましたが、私はのファイルを含めたいと思います。
さて、一時しのぎとして、私は明示的に(代わりになしを使用していない)コンテンツ、私は、私はそれらを配置したい場所をコピーしたくないファイルを明示的設定ではないすべてのものを設定し、通過することができます.nuspec
ファイルを使用してコピーしました。しかし、将来の自分のような別の開発者が来てこのステップを忘れた場合は、新しく追加されたファイルがパッケージにコピーされ、次にインストールまたはアップデート時にコピー先のプロジェクトにコピーされます。
私はOctoPackを発見した、とすぐそれが.nuspec
で<files>
ノードを検出すると、デフォルトでは何も含めないことでしょうが、私はチームシティーから何かを使用して、そしてどのように理解することが私のビルドサーバースクリプトを書き換えていませんよナゲットパックの代わりにOctoPackを呼び出すことは、私を素晴らしい選択肢として打つことはありません。 OctoPackにも制限があります。依存関係を手動でリストアップする必要があります.nuspecファイルの置き換えトークンは、(AssemblyInfo.cs
から読み取られる代わりに)コマンドラインで渡されなければならず、ツールはこの目的のために意図されていないようです「OctoPackは、展開する予定のプロジェクトにのみインストールする必要があります。つまり、コンソールアプリケーションプロジェクト、Windowsサービスプロジェクト、ASP.NET Webアプリケーションを意味します。ユニットテスト、クラスライブラリ、およびその他のサポートプロジェクトは選択されません" (OctoPack Documentation)
私が試した次の代替は、単にBeforeBuild
イベント中にコンテンツグループを一掃するmsbuild
を使用していた。
<Target Name="BeforeBuild">
<ItemGroup>
<Content Remove="**\*.*" />
<None Include="**\*.*" />
</ItemGroup>
<Message Text="Content files: @(Content)" Importance="High" />
</Target>
メッセージは、コンテンツグループが空であることを確認、しかしnuget pack
いないようですケアする。それはとにかくすべてのファイルを含んでいます。
すべての人に手動でマークすることなく、誰でもこのようなパッケージを作成できました。Build Action:なし OctoPackを使用しないでください。
"これは完璧な解決策ではありません。これは' --no-default-content'のようなものです。もっと完全な解決策は、.nuspecファイルに何かを書き込んでこれを制御することです。誰が毎回「ナゲット」に渡すパラメータを覚えているのか? – binki
継続的な統合サーバーを使用している人は誰も覚えておく必要はありません。ここで、新しい依存関係を追加したり、依存関係のバージョンを変更したりすると、そのデータをpackages.configから読み取るのではなく、手動でnuspecに追加する必要があることを覚えておく必要があります。 –