3

packagesフォルダをリポジトリにコミットしません。さらに、ビルド時にパッケージを復元するのではなく (ビルド時間が長くなる可能性があるため)、新しいリポジトリをクローン/チェックアウトするときに、次の PowerShell モジュールを使用してパッケージを復元します。

$rootDir = resolve-path "$PSScriptRoot\.."
$nugetRoot = "$rootDir\.nuget"

$env:path += ";$nugetRoot"

function Restore-Packages() {

    $packageSources = @(
        "$nugetRoot",
        "$rootDir/db",
        "$rootDir/src",
        "$rootDir/test"
    )

    $packageSources | dir -r -include "packages.config" | % {
        $configPath = $_.FullName

        $configName = $configPath.Replace($rootDir.ToString() + "\", "")

        write-host "Installing packages for " -n
        write-host "$configName" -f "white"

        nuget install "$configPath" -solutionDir "$rootDir"
    }
}

Export-ModuleMember Restore-Packages

これはうまく機能します...しかし、ランダムに機能しない可能性があります! すべてのパッケージが正しく読み込まれる場合もあれば、ランダムな package.configファイルが Nuget をクラッシュさせる場合もあります。

コンソールに出力されるエラー メッセージはありません ( -verbosity detailednuget.exe をオンにしても)。ただし、EventLog に次のエラー メッセージが表示されることがわかりました。

Log Name:      Application
Source:        Application Error
Date:          11/21/2012 9:21:42 AM
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Description:
Faulting application name: NuGet.exe, version: 2.1.31022.9038, time stamp: 0x50856393
Faulting module name: clr.dll, version: 4.0.30319.239, time stamp: 0x4e181a6d
Exception code: 0xc0000005
Fault offset: 0x0035612d
Faulting process id: 0x408
Faulting application start time: 0x01cdc7eb24bed690
Faulting application path: D:\path\to\app\.nuget\NuGet.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 63343f50-33de-11e2-b0e1-005056c00008
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-11-21T13:21:42.000000000Z" />
    <EventRecordID>77009</EventRecordID>
    <Channel>Application</Channel>
    <Security />
  </System>
  <EventData>
    <Data>NuGet.exe</Data>
    <Data>2.1.31022.9038</Data>
    <Data>50856393</Data>
    <Data>clr.dll</Data>
    <Data>4.0.30319.239</Data>
    <Data>4e181a6d</Data>
    <Data>c0000005</Data>
    <Data>0035612d</Data>
    <Data>408</Data>
    <Data>01cdc7eb24bed690</Data>
    <Data>D:\path\to\app\.nuget\NuGet.exe</Data>
    <Data>C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll</Data>
    <Data>63343f50-33de-11e2-b0e1-005056c00008</Data>
  </EventData>
</Event>

これは暗黙のうちに失敗するため、package.config1 つの がクラッシュした後に他の が実行される場合と実行されない場合があります (それもクラッシュする可能性があります!)。

コンピューターを数回再起動し、Nuget キャッシュをクリアしましたが、役に立ちませんでした。これは私のマシンの問題ですか?ヌゲットですか?

ありがとう!

4

1 に答える 1

0

スクリプトを実行してみましたが、うまくいきました。私が試すかもしれないことの1つは、nuget.exeをhttp://nuget.org/nuget.exeから新しくダウンロードしたものに置き換えることです

コマンド ラインから直接実行した場合に nuget.exe がクラッシュする場合はどうすればよいでしょうか。

それが役に立てば幸い。

于 2012-11-27T09:23:49.960 に答える