2017-10-16 22 views
0

nuget(バージョン4.3.0.4406)とmsbuild(バージョン15.3.409.57025)に問題があります。 VS2017を使用してクラスライブラリを作成しています。 VS2017のパックの機能を使用すると、(別のソリューションにインストールできる)ナゲットパッケージを正常に作成できます。今度は、install.ps1スクリプトをnugetのインストール時に実行されるtoolsフォルダのパッケージに追加します。 csprojファイルで VS2017 msbuild/nuget pack

iは、複数のターゲットフレームワークを指定しています:私はこれを行う方法を見つけ出すことはできません

<TargetFrameworks>net45;net452</TargetFrameworks>

。単純なnuspecファイルを生成するnuget -specコマンドを使ってnuspecファイルを作成しました。/t:packと/p:Nuspecfile=path.to.nuspecでmsbuildコマンドを使用すると、次のエラーが表示されます。

NuGet.Build.Tasks.Pack.targets:エラー:値はnullでも空の文字列でもかまいません。

私は問題なく動作する他のプロジェクト(VS2015ソリューションから)のnuspecファイルを持っています。私が今使っているものの構造は基本的に同じです。誰でも私に何かできないことをしようとしているかどうか知らせることができますか?

答えて

0

あなたはcsprojファイルにそのメタデータを更新することにより、任意の項目をパックすることができます:PS1ファイルのみNuGetパッケージを参照するようにpackages.configを使用してプロジェクトのために実行され、あなたが達成する別の方法を検討する必要があること

<ItemGroup> 
    <None Update="install.ps1" CopyToOutputDirectory="PreserveNewest" Pack="true" PackagePath="\tools" /> 
</ItemGroup> 

注意をスクリプトを使って何をしようとしているのかが今やPackageReferenceとして代わりに使用されるようになりました。

+0

ありがとう、私はそれを今日後で試して、それがうまくいけば戻ってきます。パッケージを使用するプロジェクトは、packages.configを使用するWPFプロジェクトです。だから、それはうまくいくはずです。 – Sam

+0

将来のVSバージョンがプロジェクトの移行を試みない限り(ただし、プロジェクトファイルの変更は維持する必要があります)。新しいプロジェクトはパッケージを参照する新しい方法を使用することができます。 –

+0

私はMartinの提案を試みました。これは、csprojファイルの要素を使用して1つのターゲットフレームワークを指定した場合にのみ機能します。 要素(net452の指定のみ)を使用すると、結果のナゲットパッケージにツールフォルダは含まれません:-(誰にもこの特定のケースに対する解決策はありますか? – Sam