2016-05-19 18 views
0

Ich habe vor kurzem ein sehr einfaches .net Webprojekt eingerichtet und Dapper in meinem Repository verwendet, um auf eine Datenbank zuzugreifen. Es funktioniert und baut ohne Fehler auf meinem lokalen Computer, aber wenn ich versuche, auf VSTS aufzubauen, bekomme ich einen Fehler, der besagt, dass bestimmte Pakete nicht kompatibel mit .net Framework v5.4 oder v5.0 sind (ausprobiert haben ein paar verschiedene Frameworks in ein Versuch, es zu bauen.)Error building dapper in einem .net v5.4 Projekt auf Visual Studio Team Services gehosteter Erstellungsagent

Hier ist die project.json Datei in Frage, die Dapper enthält. Dies baut und wieder ohne Probleme lokal auf meinem Computer:

 { 
    "version": "1.0.0-*", 
    "description": "ProjectPOC.Core.Implementations Class Library", 
    "authors": [ "CBergeron" ], 
    "tags": [ "" ], 
    "projectUrl": "", 
    "licenseUrl": "", 
    "dependencies": { 
     "ProjectPOC.Core.Infrastructure": "", 
     "ProjectPOC.Core.Models": "", 
     "Microsoft.Extensions.OptionsModel": "1.0.0-rc1-final", 
     "Dapper": "1.50.0-beta9" 
    }, 
    "frameworks": { 
     "net451": { 
     "dependencies": { 

     } 
     }, 
     "dotnet5.4": { 
     "dependencies": { 
      "Microsoft.CSharp": "4.0.1-beta-23516", 
      "System.Collections": "4.0.11-beta-23516", 
      "System.Linq": "4.0.1-beta-23516", 
      "System.Runtime": "4.0.21-beta-23516", 
      "System.Threading": "4.0.11-beta-23516" 
     } 
     } 
    } 
    } 

Wenn dieses Projekt auf dem VSTS gebaut wird gehostet Build-Agent, ich bin mit dem preinstall.ps1 Skript, das häufig ist hier verwendet:

# bootstrap DNVM into this session. 
    "bootstrapping dnvminstall..." 
    &{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))} 
    "finished bootstrapping" 

    "Loading global.json" 
    # load up the global.json so we can find the DNX version 
    $globalJson = Get-Content -Path $PSScriptRoot\global.json -Raw -ErrorAction Ignore | ConvertFrom-Json -ErrorAction Ignore 
    "finished loading global.json" 


    if($globalJson) 
    { 

     $dnxVersion = $globalJson.sdk.version 
    "setting DNX version.. to $dnxVersion " 
    } 
    else 
    { 
     Write-Warning "Unable to locate global.json to determine using 'latest'" 
     $dnxVersion = "latest" 
    } 

    # install DNX 
    # only installs the default (x86, clr) runtime of the framework. 
    # If you need additional architectures or runtimes you should add additional calls 
    # ex: & $env:USERPROFILE\.dnx\bin\dnvm install $dnxVersion -r coreclr 
    "installing DNX" 
    & $env:USERPROFILE\.dnx\bin\dnvm install $dnxVersion -Persistent 
    #& $env:USERPROFILE\.dnx\bin\dnvm install $dnxVersion -r clr 
    #& $env:USERPROFILE\.dnx\bin\dnvm install $dnxVersion -r coreclr 
    #& $env:USERPROFILE\.dnx\bin\dnvm use $dnxVersion 
    & $env:USERPROFILE\.dnx\bin\dnvm list 
    "finished DNX install " 


    "DNU restoring....." 
    # run DNU restore on all project.json files in the src folder including 2>1 to redirect stderr to stdout for badly behaved tools 
    Get-ChildItem -Path $PSScriptRoot\src -Filter project.json -Recurse | ForEach-Object { & dnu restore $_.FullName 2>1 } 

    #dnu restore 
    "finsihed DNU restore" 

Dieses Skript wird die Installation der folgenden dnx basierend auf den Build-Protokolle, die auf meinem lokalen Rechner meine dnvm Auflistung zusammenbringt:

2016-05-19T03:45:19.1014995Z installing DNX 
    2016-05-19T03:45:19.9042850Z Downloading dnx-clr-win-x86.1.0.0-rc1-update2 from https://www.nuget.org/api/v2 
    2016-05-19T03:45:22.7176602Z Installing to C:\Users\buildguest\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update2 
    2016-05-19T03:45:22.7766619Z Adding C:\Users\buildguest\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update2\bin to process PATH 
    2016-05-19T03:45:22.8456619Z Adding C:\Users\buildguest\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update2\bin to user PATH 
    2016-05-19T03:45:22.8826599Z Native image generation (ngen) is skipped. Include -Ngen switch to turn on native image generation to improve application startup time. 
    2016-05-19T03:45:23.0276682Z Active Version   Runtime Architecture OperatingSystem Alias 
    2016-05-19T03:45:23.0346603Z ------ -------   ------- ------------ --------------- ----- 
    2016-05-19T03:45:23.0356615Z * 1.0.0-rc1-update2 clr  x86   win     
    2016-05-19T03:45:23.0586614Z finished DNX install 
    2016-05-19T03:45:23.0596622Z DNU restoring..... 
    2016-05-19T03:45:23.2796607Z Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16609 
    2016-05-19T03:45:23.4785866Z GET https://api.nuget.org/v3/index.json 
    2016-05-19T03:45:23.5821917Z OK https://api.nuget.org/v3/index.json 123ms 
    2016-05-19T03:45:23.6261910Z GET https://www.myget.org/F/aspnetvnext/api/v2/ 
    2016-05-19T03:45:24.4737562Z OK https://www.myget.org/F/aspnetvnext/api/v2/ 847ms 
    2016-05-19T03:45:24.4787560Z GET https://www.myget.org/F/aspnetmaster/ 
    2016-05-19T03:45:25.1793928Z OK https://www.myget.org/F/aspnetmaster/ 700ms 

Nachdem die von nuget wiederherstellen beendet, während des Build wirft es Fehler wie diese für das Paket Bibliothek mit adrett drin und allem, was es verweist:

 Unable to resolve dependency System.Collections.NonGeneric 4.0.1-rc2-24027 
... 
2016-05-19T03:47:01.3562201Z ##[error]Platform\POC\ProjectPOC.Web.API\src\ProjectPOC.Core.Implementations\project.json(0,0): Error NU1002: The dependency System.Collections.NonGeneric 4.0.1-rc2-24027 in project ProjectPOC.Core.Implementations does not support framework .NETPlatform,Version=v5.4. 
2016-05-19T03:47:01.3602187Z  5>C:\a\1\s\Platform\POC\ProjectPOC.Web.API\src\ProjectPOC.Core.Implementations\project.json : error NU1002: The dependency System.Collections.NonGeneric 4.0.1-rc2-24027 in project ProjectPOC.Core.Implementations does not support framework .NETPlatform,Version=v5.4. [C:\a\1\s\Platform\POC\ProjectPOC.Web.API\src\ProjectPOC.Core.Implementations\ProjectPOC.Core.Implementations.xproj] 

Auch dieser Bau, Betrieb, den Einsatz zu Azurblau, usw. einwandfrei von meinem lokalen Rechner in VS2015, so Ich habe das Gefühl, dass es etwas mit dem gehosteten Build-Agent zu tun hat, und es ist dnx/dnvm/nuget Setup. Gibt es etwas, das ich dem Build-Agent hinzufügen muss oder etwas, das ich mit der Installation von dnvm/nuget machen muss, um die richtigen Versionen von allem zu erhalten? Ich habe auch meine nugget.config auf den Build Agent hochgeladen, und das hat auch nicht geholfen. Ich kann mehr Protokolle auf Anfrage zur Verfügung stellen.

meine lokale dnvm Liste sieht wie folgt aus:

Active Version   Runtime Architecture OperatingSystem Alias 
    ------ -------   ------- ------------ --------------- ----- 
     1.0.0-beta8  clr  x64   win 
     1.0.0-beta8  coreclr x64   win 
     1.0.0-beta8  coreclr x86   win 
     1.0.0-rc1-update1 clr  x64   win 
     1.0.0-rc1-update1 clr  x86   win 
     1.0.0-rc1-update1 coreclr x64   win 
     1.0.0-rc1-update1 coreclr x86   win 
    * 1.0.0-rc1-update2 clr  x86   win    default 

Vielen Dank im Voraus, wenn jemand irgendeine Hilfe bei dieser zur Verfügung stellen kann oder hat mich zu einem ähnlichen Problem laufen, bevor mit den neuen .net Sachen

Antwort

1

Ich traf dieses Problem vorher und es hat nicht auf meinem lokalen Rechner funktioniert. Und ich bekomme es mit der "1.50.0-Beta8" Version für Dapper statt "1.50.0-Beta9". beta8 verwendet ältere Abhängigkeiten als beta9.

Dieses Problem scheint durch die Änderung hier verursacht zu werden: Rename "dotnet" to "NETStandard", aber ich habe keine Zeit, es herauszufinden.

+0

Vielen Dank! Die einfachsten Antworten sind die besten. Zurück zu "Dapper": "1.50.0-beta8" und es begann auf dem Build-Host zu arbeiten. Erklärt nicht, warum es auf meiner Maschine funktioniert, aber ich kann weitermachen mit dem, was ich mache. – CBerg