2017-11-23 34 views
1

プロジェクトにファイルを追加し、そのファイルを"Copy to Output Directory"フラグに設定するには、自分のNuGetパッケージが必要です。NuGet contentFilesを使用してファイルをコピーして出力ディレクトリを構築します

これまでのところ、install.ps1スクリプトを使用しています(answer by @workabyte to Set content files to “copy local : always” in a nuget package)。

しかし、NuGet 3.3以降では、contentFiles modelを使用したネイティブサポートがあることを理解しました。パッケージをコンパイルすると

<?xml version="1.0"?> 
<package> 
    <metadata minClientVersion="3.3.0"> 
    ... 
    <contentFiles> 
     <files include="**/*.png" buildAction="None" copyToOutput="true" /> 
    </contentFiles> 
    </metadata> 
</package> 

、そのディレクトリ構造を持つimage.pngが追加された:私の.nuspecで、その後

contentFiles\ 
    any\ 
    any\ 
     image.png 

そして:

私の理解では、私のようなディレクトリ構造を作成することでした.nupkg

しかし、Visual Studio(2017)でパッケージをインストールすると、image.pngはプロジェクトに追加されません。

私は間違っていますか?

+0

あなたはNuGetパッケージを参照する 'PackageReference'スタイルを使用していますか? 'contentFiles'は' packages.config'ベースのプロジェクトでは動作しません –

+0

@MartinUllrichあなたのお返事ありがとうございます。私はこれらの行に沿って何かを読んだ。しかし、正直言って、私はそれを理解していません。 *「NuGetパッケージを参照するスタイル」*とはどういう意味ですか? –

+1

NuGetオプションでは、最初にパッケージをプロジェクトにインストールするときにpackages.configとPackageReferenceの間で選択できます。プロジェクトをまだアップグレードする方法はありません(すべてのパッケージをアンインストールする=>スイッチ "スタイル" =>それらを再インストールする) –

答えて

1

contentFiles機能は、NuGetパッケージを参照する「スタイル」のPackageReferenceを使用する場合にのみサポートされます。 packages.configを使用しているプロジェクトでは機能しません(すべてのパッケージをアンインストールし、タイプを変更してからすべてインストールする以外の方法はありません)。

NuGetのブログ記事"NuGet is now fully integrated into MSBuild"を参照してください。特に、「.NETコアではない他のプロジェクトタイプについて」のセクションを参照してください。 NuGetパッケージを参照する好ましい方法を設定する方法については、

+0

あなたの答えをありがとう。 'PackageReference'はVS 2017のものだけですか?以前のバージョンでは、 'packages.config'はこれまでに使用されたものです。 (おそらく明示的にバージョンNuGetアドオンをインストールしない限り)。また、 'PackageReference'では、' install.ps1'が実行されていないようですが、正しいのでしょうか? –

+0

[NuGetコンテンツとcontentFilesフォルダにファイルを複製しないようにする](https://stackoverflow.com/q/47468941/850848)のフォローアップに関する質問を投稿しました。あなたは見てみることができますか? –

関連する問題