I am trying to get an MVC 6 web application up and running using the .NET 4.6 CLR, but I get the following kind of errors:
The dependency Microsoft.AspNet.Loader.IIS 1.0.0-beta5 in project TestDeployProject does not support framework .NETFramework,Version=v4.6.
project.json:
{
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta5",
"Microsoft.Framework.DependencyInjection.Abstractions": "1.0.0-beta5",
"Microsoft.AspNet.Mvc": "6.0.0-beta5"
},
"frameworks": {
"net46": { }
},
}
According to this blog post, the .NET 4.6 target framework does work with ASP.NET 5.
What am I doing wrong?
Unlike most Microsoft.Framework.* projects (like Caching for instance: https://github.com/aspnet/Caching/blob/dev/src/Microsoft.Framework.Caching.Abstractions/project.json#L7), Microsoft.AspNet.* packages only work with the "dnx-flavored" .NET Framework: if you want to use these packages in your own project, remove net46 and add a new dnx46 TFM and it should work.
Note that you'll need a recent DNX runtime version to use dnx46: don't hesitate to migrate to the latest nightly versions.
Related
I am trying to learn the basics of ASP.NET Core using this tutorial:
I have created a ASP.NET Core web application
I have upgraded it using instruction from here
Now, I am trying to setup the database migration using dotnet ef migrations add Initial from command prompt within project's folder (where project.json is located):
No executable found matching command "dotnet-ef"
I have changed project.json, so that dotnet-ef works:
"tools": {
...
"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.0.0-preview1-final",
"imports": [
"portable-net45+win8+dnxcore50",
"portable-net45+win8"
]
}
Now, the generation fails with the following error:
The specified framework 'Microsoft.NETCore.App', version
'1.0.0-rc2-3002702' was not found.
- Check application dependencies and target a framework version installed at:
C:\Program Files\dotnet\shared\Microsoft.NETCore.App
- The following versions are installed:
1.0.0
1.0.1
1.1.0
- Alternatively, install the framework version '1.0.0-rc2-3002702'
Ok, it makes sense, because Microsoft.EntityFrameworkCore.Tools 1.0.0-preview1-final relies on the old version mentioned in the error, as found in the project.lock.json file.
I don't want to downgrade, so I put the latest version of Microsoft.EntityFrameworkCore.Tools I could find:
"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.1.0-preview4-final",
"imports": [
"portable-net45+win8+dnxcore50",
"portable-net45+win8"
]
},
Doing this will lead to the same error:
No executable found matching command "dotnet-ef"
How can I make it work in version 1.1?
Other context information that might be useful:
OS: Windows 7 x64
VS: 2015 Community Edition
Other parts from project.json:
"frameworks": {
"netcoreapp1.1": {
"imports": [
"portable-net45+win8+dnxcore50",
"portable-net45+win8"
]
}
},
"runtimes": {
"win7-x64": {}
},
UPDATE [30/3/2017]
The new package is
Install-Package Microsoft.EntityFrameworkCore.Tools
ORIGINAL
Try adding
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"
}
Additionally here is a tutorial on setting up .Net Core 1.1.0 with EF Core 1.1.0
https://learn.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite
Grierson's answer is ok, but for future reference I will include the whole process until I made it work:
1) Tools.DotNet already suggested in the accepted answer
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"
}
Ran the same command and received:
Cannot execute this command because Microsoft.EntityFrameworkCore.Design is not installed. Install the version of that package that matches the installed version of Microsoft.EntityFrameworkCore and try again.
2) Added
//EF Core
"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
}
3) Now, the error is:
No parameterless constructor was found on 'ApplicationDbContext'.
Either add a parameterless constructor to 'Application DbContext' or
add an implementation of 'IDbContextFactory' in
the same assembly as 'ApplicationDbC ontext'.
I have chosen to implement the interface. One possible way:
public ApplicationDbContext Create(DbContextFactoryOptions options)
{
var builder = new DbContextOptionsBuilder<ApplicationDbContext>();
builder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Movies;Trusted_Connection=True;MultipleActiveResultSets=true");
return new ApplicationDbContext(builder.Options);
}
The same error occurs when running dotnet ef migrations add Initial
4) I have added a default constructor for ApplicationDbContext class
Now I can add the migration.
EntityFrameworkCore 1.1.0-preview4-final will work only asp.net core 1.1,if you want to move from core 1.0 to core 1.1,look into https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-net-core-1-1/.
I had the same issue.
that's resolved it for me
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
},
You might miss CliToolReference
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
check this
Tried to use the Entityframework in a .netCore console application with project.json
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc2-3002702"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
Unfortunately these packages do not work together:
NU1002 The dependency Remotion.Linq 2.0.2 does not support framework .NETCoreApp,Version=v1.0.
NU1002 The dependency Ix-Async 1.2.5 does not support framework .NETCoreApp,Version=v1.0.
Does someone know how to use the entity framework in .net Core console applications?
Microsoft.EntityFrameworkCore in version 1.0.0-rc2-final uses Remotion.Linq 2.0.2 which (in that version) does not support the netstandard/netcoreapp target framework monikers yet. However it supports the portable class library combination portable-net45+win+wpa81+wp80 which can be imported using the imports statement in the above project.json. The same is true for the deprecated Ix-Async and the portable class library portable-windows8+net45+wp8. Read the rc2 samples of entity framework carefully, they surely import a portable class library target framework moniker.
However, I highly recommend to upgrade to the current .NET Core version (RTM). .NET Core and Entity Framework Core in the above versions are all release candidates and not the final version. RC2 had a go-live license but that will expire (IMHO) like 3 months after the next go-live or final release. Further, Remotion.Linq supports the netstandard then and the Ix-Async was repackaged as System.Interactive.Async and also supports netstandard. Therefore, your problem would vanish.
I am developing an asp.net 5 application targeting dnx451.
The asp.net 5 project relies some libraries with unit-tests written for nunit 2.x. So the reasonable choice for me is to use nunit for testing the asp.net 5 project.
When I running the unit test in ReSharper, the ReSharper says "Test not run" with additional message "System.IO.FileNotFoundException: Could not load file or assembly xxx ".
Both nunit 2.6.4 and 3.0.0-beta-2 results the same error.
Any one has successfully running nunit tests against an dnx project?
DNX tests aren't currently supported by ReSharper. It's a whole new execution model, and hasn't yet been implemented for ReSharper. I'd expect to see support as DNX and asp.net stabilise and near release. Also, I don't believe nunit itself supports running as a DNX test runner - the xunit team have a separate project to plug into DNX: https://github.com/xunit/dnx.xunit
NUnit does not support the DNX core.
Follow this issue to see when nunit adds dnx support. https://github.com/nunit/nunit/issues/575
Looks like NUnit has (partial) support as of v3.0.0-RC
http://www.alteridem.net/2015/11/04/testing-net-core-using-nunit-3/
Hopefully, by saying "Especially with ReSharper", you mean that you want to know how to run NUnit tests, and if possible, with ReSharper. That being said, here's how to run NUnit tests against ASP.NET Core (Formerly known as ASP.NET 5) in Visual Studio without needing ReSharper:
Add a new project and choose Console Application (.NET Core). Trying to use class libraries will currently report an error.
Add the latest version of the dotnet-test-nunit NuGet package (Make sure that Include prerelease is checked, or you won't find it in the NuGet feed)
Add the latest version of the NUnit NuGet package.
Edit project.json and add this line: "testRunner": "nunit",
Now you can run your tests by choosing Test - Run - All Tests from the Visual Studio menu.
Your project.json file should look like this:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"dotnet-test-nunit": "3.4.0-beta-1",
"ProjectUnderTest": "1.0.0-*",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
},
"NUnit": "3.4.1"
},
"testRunner": "nunit",
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
We have been focusing on the new JavaScript capabilities of Visual Studio 2015 CTP 6 for the past few weeks. We were sorta expecting other basic .NET aspects to just work.
Today, we just tried to add some Unit Tests using NUnit to a WebAPI project and we are 0 for 20 (since it's opening day!) No matter what we try, we can't seem to even be able to add a NuGet package reference to NUnit (including 2.6.4 and 3.0.0-beta1).
Anybody have any suggestions on how to get NUnit tests to work with against ASP.NET 5 WebAPI projects?
Here is what we are doing:
Adding the new 4.6 ASP.NET 5 project
We are interested in the WebAPI stuff:
We read about issues with NuGet Package manager from NuGet Beta2, so we installed that version. And updated our configuration:
We can find the NUnit package (3.0 beta)
But in the end, this is all we get in the output window:
And the references are missing:
Here is our Project.json for this project:
{
/* Click to learn more about project.json http://go.microsoft.com/fwlink/?LinkID=517074 */
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-beta3",
"Microsoft.AspNet.Mvc": "6.0.0-beta3",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta3",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta3",
"NUnit": "3.0.0-beta-1"
},
"frameworks": {
"aspnet50": {},
"aspnetcore50": {}
},
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
],
"bundleExclude": [
"node_modules",
"bower_components",
"**.kproj",
"**.user",
"**.vspscc"
]
}
Alright, it turns out that my PostSharp NuGet source was messing with NuGet. I disabled it and things started working.
I now have NUnit 3.0 Beta 1 available:
I suspect this is or will be fixed in a recent release of PostSharp or the Package Source.
I am trying to include Google Analytics API package in my MVC 6 application. I've tried to include all the dependencies or to let it install trough NuGet Package Manager. In either case, when i build the solution, I get an error: Error CS0246 The type or namespace name 'Google' could not be found (are you missing a using directive or an assembly reference?) ProjectName.ASP.NET Core 5.0
Any idea what dependencies I need to include for it to build in ASP.Net Core 5.0?
Here is what i have in my project.json file:
"dependencies": {
...
"Microsoft.Net.Http": "2.2.28.0",
"Microsoft.Bcl": "1.1.9.0",
"Microsoft.Bcl.Build": "1.0.21.0",
"Microsoft.Bcl.Async": "1.0.168.0",
"Google.Apis.Analytics.v3": "1.9.0.1100"
},
...
"frameworks": {
"aspnet50": {
"dependencies": {
}
},
"aspnetcore50": {
"dependencies": {
"Newtonsoft.Json": "6.0.8.0"
}
}
},
Similar issue to the one described here: Problems with RavenDB.Client reference in asp.net 5.0 project.json
Adapting my answer from there:
The problem is that you referencing Google.Apis.Analytics.v3 in the top level dependencies node in project.json. That means that those dependencies are applicable to both Desktop CLR (aspnet50) and CoreCLR (aspnetcore50).
When you build an ASPNET 5 project, all configurations are built, not just the "active" one. Mostly sure Google.Apis.Analytics.v3 works only with the Desktop CLR so move it under a dependencies node under that configuration.
"dependencies": {
....
},
"frameworks": {
"aspnet50": {
"dependencies" : {
"Google.Apis.Analytics.v3": "1.9.0.1100"
}
},
"aspnetcore50": {}
}
Then you might have to either use some conditional blocks in your code (#if ASPNET50) or remove CoreCLR all together.
Then you might have to either use some conditional blocks in your code (#if ASPNET50) or remove CoreCLR all together.