0

I am trying to create a Class Library (Package) project in Visual Studio 2015 Update 1, the project builds successfully on my local machine, but the build fails on MyGet build services (MyGet feed pulls the project from github repo and tries to build it).

project.json file looks like this:

{
  "version": "1.0.0-*",
  "description": "TestMyGet Class Library",
  "authors": [ "Test" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "frameworks": {
    "net451": { },
    "dotnet5.4": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Data.SqlClient": "4.0.0-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Threading": "4.0.11-beta-23516"
      }
    }
  },
  "dependencies": {
    "WindowsAzure.Storage": "6.2.2-preview"
  }
}

The build log is as follows:

2016-03-23 18:58:46 [Information] Sources at revision 2e055ab76bb167d728924383fa842961389e1200
.
2016-03-23 18:58:46 [Information] Finished fetching sources.
2016-03-23 18:58:46 [Information] Searching for projects to build...
2016-03-23 18:58:46 [Information] Searching for MyGet.bat, MyGet.cmd or MyGet.ps1...
2016-03-23 18:58:46 [Warning] Could not find MyGet.bat, MyGet.cmd or MyGet.ps1.
2016-03-23 18:58:46 [Information] Searching for build.bat, build.cmd or build.ps1...
2016-03-23 18:58:46 [Warning] Could not find build.bat, build.cmd or build.ps1.
2016-03-23 18:58:46 [Information] Searching for MyGet.sln...
2016-03-23 18:58:46 [Warning] Could not find MyGet.sln.
2016-03-23 18:58:46 [Information] Searching for other *.sln files...
2016-03-23 18:58:46 [Information] Registering NuGet package sources...
2016-03-23 18:58:46 [Information] Creating new NuGet.config file in which to register package sources.
Package Source with Name: feratur-public added successfully.
2016-03-23 18:58:49 [Information] Finished registering package sources.
2016-03-23 18:58:49 [Information] Running Package Restore...
2016-03-23 18:58:49 [Information] Found NuGet.config file that will be used during package restore.
2016-03-23 18:58:49 [Information] Start running package restore for D:\temp\656b00b\TestMyGet.sln...

MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.
2016-03-23 18:58:51 [Information] Finished running package restore for D:\temp\656b00b\TestMyGet.sln (restored 0 packages).
2016-03-23 18:58:51 [Information] Finished Package Restore.
2016-03-23 18:58:51 [Information] Searching for restored NuGet packages...
2016-03-23 18:58:51 [Information] Found no restored packages.
2016-03-23 18:58:51 [Information] Start building project(s)...
2016-03-23 18:58:51 [Information] Start building project D:\temp\656b00b\TestMyGet.sln...

  C:\Users\Wonka\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe --appbase "D:\temp\656b00b\src\TestMyGet" "C:\Users\Wonka\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\lib\Microsoft.Dnx.Tooling\Microsoft.Dnx.Tooling.dll" pack "D:\temp\656b00b\src\TestMyGet" --configuration Release --out "..\..\artifacts\bin\TestMyGet"
  Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
  Building TestMyGet for .NETFramework,Version=v4.5.1
    Using Project dependency TestMyGet 1.0.0
      Source: D:\temp\656b00b\src\TestMyGet\project.json
    Unable to resolve dependency WindowsAzure.Storage 6.2.2-preview
    Using Assembly dependency fx/mscorlib 4.0.0
      Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll
    Using Assembly dependency fx/System 4.0.0
      Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.dll
    Using Assembly dependency fx/System.Core 4.0.0
      Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll
    Using Assembly dependency fx/Microsoft.CSharp 4.0.0

And:

  Building TestMyGet for .NETPlatform,Version=v5.3
    Using Project dependency TestMyGet 1.0.0
      Source: D:\temp\7ca98d3\src\TestMyGet\project.json
    Unable to resolve dependency WindowsAzure.Storage 6.2.2-preview
    Unable to resolve dependency Microsoft.CSharp 4.0.1-beta-23516
    Unable to resolve dependency System.Collections 4.0.11-beta-23516
    Unable to resolve dependency System.Data.SqlClient 4.0.0-beta-23516
    Unable to resolve dependency System.Linq 4.0.1-beta-23516
    Unable to resolve dependency System.Runtime 4.0.21-beta-23516
    Unable to resolve dependency System.Runtime.InteropServices 4.0.21-beta-23516
    Unable to resolve dependency System.Threading 4.0.11-beta-23516

For me it looks like MyGet build services can't find and pull NuGet packages required for the build. Do you have any ideas what can be going wrong here?

A. Burlak
  • 25
  • 3
  • I've not done this with MyGet, but I have done it with other build systems like TFS and TeamCity. Usually you have to add a nuget.config file to the solution that contains the `` element that contains the source repo's for those packages. See: http://docs.nuget.org/Consume/NuGet-Config-File – CodingGorilla Mar 23 '16 at 14:24
  • @CodingGorilla Default NuGet package source is specified in 'Package sources' in the corresponding menu setting on my MyGet feed and there is a note: "By default, we will add all your package sources defined on the current feed to the NuGet.config file on our build machines." But I'll try to add a nuget.config file explicitly – A. Burlak Mar 23 '16 at 14:37
  • Yea, sorry I haven't used MyGet yet, so I was guessing based on my past experience with external build systems and custom nuget repos. That's why I didn't post it as an answer. :) – CodingGorilla Mar 23 '16 at 14:39

1 Answers1

0

May sound obvious but just want to make sure that's not the issue: please ensure you didn't check in the project.lock.json file.

In addition, you'll need a build script (put MyGet.ps1 in the solution root directory) that takes care of a few things:

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

# 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

if ($globalJson)
{
    $dnxVersion = $globalJson.sdk.version
}
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
& $env:USERPROFILE\.dnx\bin\dnvm install $dnxVersion -Persistent

# 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 -Filter project.json -Recurse | ForEach-Object 
{ 
    & dnu restore $_.FullName 2>1 
}

# run msbuild on the solution file
Get-ChildItem -Path $PSScriptRoot -Filter *.sln -Recurse | ForEach-Object 
{ 
    & "$env:msbuildexe" $_.FullName /p:Configuration=$env:Configuration /m /v:M /fl /flp:LogFile="msbuild.log;Verbosity=Normal" /nr:false 2>1 
}
Xavier Decoster
  • 14,580
  • 5
  • 35
  • 46
  • project.lock.json file wasn't checked in, but the build script did the trick, everything works fine now, thanks a lot! – A. Burlak Mar 24 '16 at 20:55