2

nuget.exe コマンド ライン ツールで奇妙な問題が発生しています。

nuget コマンド ライン ツールを実行するプロセスを起動するコンソール アプリケーションがあります。

出力は次のとおりです。

nuget.exe pack Project.csproj -Prop Configuration=Release 
Attempting to build package from 'Project.csproj'. Packing files from
'C:\Project\bin\Release'.

オブジェクトのインスタンスに設定されていない Object 参照をスローします。例外。

ちなみに、私のプロセスの WorkingDirectory は C:\Project なので、ファイル パスは問題ありません。

奇妙なのは、標準の Windows コマンド ラインを使用して .csproj フォルダーに移動し、同じコマンドを実行すると、nupkg ファイルが作成されることです。

私が行った場合:

cd ..

そして実行します:

nuget.exe pack Project\Project.csproj -Prop Configuration=Release

オブジェクトのインスタンスに設定されていないオブジェクト参照を取得しています。例外。

私のコンソール アプリケーション コードは次のとおりです。

var process = new Process  {
    StartInfo = new ProcessStartInfo("nuget.exe", 
                                     "pack Project.csproj -Prop Configuration=Release")
                    {
                        WorkingDirectory = "C:\\Project",
                        UseShellExecute = false,
                        RedirectStandardInput = true,
                    }
};
4

2 に答える 2

6

私は同じ問題を抱えていました.私の問題は、パッケージの更新(およびSVNでのマージ)の後、packages.configファイルに古いパッケージと新しいパッケージの両方のバージョンが参照されていることでした。古いパッケージのフォルダーを削除した後、「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」というエラーが表示されました。

そのため、このエラーを解決するには、packages.config ファイルに含まれるパッケージのバージョンが 1 つだけであることを確認してください。

于 2012-06-21T06:28:08.780 に答える
1

この null 参照エラーが発生するのは、packages.config に、もう存在しないアセンブリへのエントリがあるためだと思います。

たとえば、私のpackages.configは次のようになりました。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="H.Common" version="1.0.0.9" targetFramework="net35" />
  <package id="H.Common" version="1.0.0.10" targetFramework="net35" />
  <package id="H.Validation" version="3.0.0.50" targetFramework="net35" />
</packages>

また、構成にゴースト アセンブリへの参照があったため、ナゲット パックでエラーが発生しました。行を削除したところ、構成は次のようになりました。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="H.Common" version="1.0.0.10" targetFramework="net35" />
  <package id="H.Validation" version="3.0.0.50" targetFramework="net35" />
</packages>

それは今幸せにコンパイルします。

于 2012-09-05T16:08:17.923 に答える