2016-04-19 13 views
0

私はすべてのソリューションで共通のパッケージディレクトリを作成するために、ナゲットの移行を実行しています。私は、NuGet設定ファイル、ターゲットファイル、ヒントパス(これはNuGetの自動パッケージ復元では必要ありません)、およびプロジェクトとソリューションファイルのいくつかの他のものを取り除くためのスクリプトを書いています。 NuGet設定ファイルが1つあります。Nuget Packagesを自動的に復元する際のトラブルXunitとNewtonsoft.Json

ほとんどの場合、移行は期待どおりに機能しました。しかし、私はXunitとNewtonsoft.Jsonパッケージに関する問題に遭遇しました。たとえば、一部のプロジェクトでXunitパッケージが見つからず、Visual Studioに次のようなエラーが表示されました。「Xunitの型または名前空間が見つかりませんでした。アセンブリ参照がありませんか?」これを修正できる唯一の方法は

<dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
</dependentAssembly> 
:私はxUnitのヒントパスがプロジェクトファイルに再度追加し、次のコードは、app.configファイルに追加された再インストール時に

Update-Package –reinstall xunit 

次のコマンドを実行して、xUnitのパッケージを再インストールするには

私の質問は、xunitとNewtonsoft.jsonパッケージのヒントパスとその他のものが必要なのはなぜですか?それがなくてもこれを解決する方法はありますか?これは、私がこの移行を実行することによって避けようとしている正確な種類のものです。

答えて

1

packages.configファイルを使用している場合は、MSBuildがアセンブリを解決できるようにヒントパスが必要です。 xunitとJSON.NETはGACにインストールされないので、ヒントパスやプロジェクト用に設定された参照パスなどの他のメカニズムがなければ、ビルドはアセンブリを見つけることができません。また、NuGetパッケージを更新するたびに、ヒントパスがプロジェクトファイルに追加されます。

同様の問題は、使用されるカスタムMSBuild .targetsファイルで発生します。それらをプロジェクトから削除すると、MSBuildはそれらを見つけることができません。

NuGet restoreは、パッケージをダウンロードしてpackagesディレクトリに展開します。プロジェクトファイルは変更されません。

ヒントパスを使用しない場合は、packages.configファイルの代わりにproject.jsonファイルを使用してください。 project.jsonファイルを使用すると、プロジェクトファイル(.csproj)に参照またはヒントパスを持たなくても、NuGetターゲットファイルを使用してビルド時にアセンブリが解決されます。

関連する問題