Skip to content
This repository was archived by the owner on Dec 18, 2017. It is now read-only.

Problem with compiling ASP.NET 5 project beta 6 with dnx451 section Error: Predefined type 'System.Object' is not defined or imported #2422

Closed
radenkozec opened this issue Aug 6, 2015 · 8 comments

Comments

@radenkozec
Copy link

When I want to compile my project I am getting over 2000 errors like this:
Predefined type 'System.Object' is not defined or imported
If I remove dnx451 section from my project.json config all issues are resolved.
My project.json:

 "dependencies": {
    "EntityFramework.SqlServer": "7.0.0-beta6",
    "EntityFramework.Commands": "7.0.0-beta6",
    "Microsoft.AspNet.Mvc": "6.0.0-beta6",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta6",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.Google": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta6",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta6",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta6",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta6",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta6",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta6",
    "Microsoft.Framework.Logging": "1.0.0-beta6",
    "Microsoft.Framework.Logging.Console": "1.0.0-beta6",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta6",
    "Project1.Data": "1.0.0-*",
    "Project1.Model": "1.0.0-*",
    "Mandrill.Client": "1.0.0-*"
  },

  "commands": {
    "web": "Microsoft.AspNet.Hosting --config hosting.ini",
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451":{},
    "dnxcore50": {
      "dependencies": {
        "System.IO.FileSystem.Primitives": "4.0.0-beta-23109",
        "System.IO.FileSystem": "4.0.0-beta-23109"
      }

    }
  },
@davidfowl
Copy link
Member

I'm guessing the problems have to do with your project references. What are in those projects?

@radenkozec
Copy link
Author

My ASP.NET 5 project is referencing 3 smaller .NET Core class library projects:
"Project1.Data": "1.0.0-",
"Project1.Model": "1.0.0-
",
"Mandrill.Client": "1.0.0-*"

Project1.Data which needs to be referenced also from .NET Framework Project so it has dotnet section:

"dependencies": {
    "Project1.Model": "1.0.0-*",
     "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta6",
    "Newtonsoft.Json": "7.0.1-beta3",
    "System.Net.Http": "4.0.0-beta-23109",
    "System.Data.SqlClient": "4.0.0-beta-23109",
    "System.Data.Common": "4.0.0-beta-23109"
  },

  "frameworks": {
    "dotnet": { },

    "dnxcore50": {
      "dependencies": {
        "System.Collections": "4.0.10-beta-23109",
        "System.Runtime": "4.0.20-beta-23109",
        "System.Runtime.Extensions": "4.0.10-beta-23109"
      }
    }
  }

Project1.Model

 "dependencies": {
    "System.Linq": "4.0.0-beta-23109",
    "System.Threading": "4.0.10-beta-23109",
    "Microsoft.CSharp": "4.0.0-beta-23109"
  },

  "frameworks": {
    "dotnet": { },
    "dnx451": { },
    "dnxcore50": {
      "dependencies": {
        "System.Collections": "4.0.10-beta-23109",
        "System.Runtime": "4.0.20-beta-23109",
        "System.Runtime.Extensions":"4.0.10-beta-23109"
      }
    }
  }

And Mandrill.Client which also need to be used from .NET Framework project

"dependencies": {
    "Newtonsoft.Json": "7.0.1-beta3",
    "System.Net.Http": "4.0.0-beta-23109",
    "System.Linq": "4.0.0-beta-23109",
    "System.Threading": "4.0.10-beta-23109",
    "Microsoft.CSharp": "4.0.0-beta-23109"
  },

  "frameworks": {
    "dotnet": { },
    "dnx451": {

    },
    "dnxcore50": {
      "dependencies": {
        "System.Collections": "4.0.10-beta-23109"
      }
    }
  }

@davidfowl
Copy link
Member

Project1.Data which needs to be referenced also from .NET Framework Project so it has dotnet section:

Avoid using the System.* packages in places where dnx451 exist and instead should prefer frameworkAssemblies. Use them in dotnet and in dnxcore50 but not in dnx4x targets. You should also introduce dnx45x targets if you don't have them in your class lib (Project1.Data as an example).

@radenkozec
Copy link
Author

I had dnx45x targets in Project1.Data but removed them because compilation errors received above.
So you are saying for Project1.Data I should:

  1. Add dnx451 section
  2. Inside that section add frameworkAssemblies
  3. Leave everything else as it is.

Can you please give me the example how to refactor only Project1.Data project.json?

@davidfowl
Copy link
Member

"dependencies": {
    "Project1.Model": "1.0.0-*",
    "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta6",
    "Newtonsoft.Json": "7.0.1-beta3"
  },

  "frameworks": {
    "dnx451": {
        "frameworkAssemblies": {
          "System.Net.Http": "",
          "System.Runtime": ""
        }
    },
    "dotnet": {
      "dependencies": {
        "System.Collections": "4.0.10-beta-23109",
        "System.Runtime": "4.0.20-beta-23109",
        "System.Runtime.Extensions": "4.0.10-beta-23109",
        "System.Net.Http": "4.0.0-beta-23109",
        "System.Data.SqlClient": "4.0.0-beta-23109",
        "System.Data.Common": "4.0.0-beta-23109"
      }
    }
  }

@radenkozec
Copy link
Author

I will try this and post update later. I don't understand why I don't need dnxcore50 section? Does this mean that my project will not support .NET Core?

@radenkozec
Copy link
Author

@davidfowl

Managed to make it work.
My ASP.NET 5 project project.json now looks like this:

 "frameworks": {
    "dnx451": {
      "frameworkAssemblies": {
        "System.Runtime": ""
      }
    },
    "dnxcore50": {
      "dependencies": {
        "System.IO.FileSystem.Primitives": "4.0.0-beta-23109",
        "System.IO.FileSystem": "4.0.0-beta-23109"
      }
    }

And in Project1.Data used your project.json just added "System.Data": "" in dnx451 section.
Thank you very much.
But I still do not understand how can I have project without dnxcore50 section in Project1.Data?
Does it mean that my project will not support .NET Core?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants