286

The project is an ASP.NET MVC Web App targeting the .NET Framework 4.6.1.

All of a sudden (some NuGet packages were upgraded) I started to get the following error during runtime:

CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.

In my main view Index.cshtml, in a line where I make use of @Html.ActionLink

I do have .NET Core SDK 2.0 and .NET Framework 4.7.1 installed in my machine but I don't want to include a reference to it. This is a .NET Framework web app only, it's hosted on Windows IIS where the installed framework is 4.6.1, there's no NET Core installed in the server.

So why is it asking to add a reference to netstandard? How can I fix it without referencing netstandard but the full Windows .NET Framework 4.6.1?

I've checked out a previous commit which worked fine and I'm still getting this error. So it's not related to NuGet packages being upgraded. Seems to be something on my local dev machine.

If a publish the app to a directory and run it with IIS it works.

Link to .csproj gist

packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net46" />
  <package id="BundleTransformer.Core" version="1.9.69" targetFramework="net46" />
  <package id="BundleTransformer.Handlebars" version="1.9.73" targetFramework="net46" />
  <package id="BundleTransformer.Less" version="1.9.69" targetFramework="net46" />
  <package id="BundleTransformer.Yui" version="1.9.52" targetFramework="net46" />
  <package id="Dapper" version="1.42" targetFramework="net46" />
  <package id="EcmaScript.Net" version="1.0.1.0" targetFramework="net46" />
  <package id="EntityFramework" version="6.0.0" targetFramework="net46" />
  <package id="Glimpse" version="1.8.6" targetFramework="net46" />
  <package id="Glimpse.AspNet" version="1.9.2" targetFramework="net46" />
  <package id="Glimpse.Mvc5" version="1.5.3" targetFramework="net46" />
  <package id="JavaScriptEngineSwitcher.Core" version="1.2.4" targetFramework="net46" />
  <package id="JavaScriptEngineSwitcher.V8" version="1.3.0" targetFramework="net46" />
  <package id="jQuery" version="2.1.3" targetFramework="net46" />
  <package id="jQuery.Validation" version="1.13.1" targetFramework="net46" />
  <package id="LowercaseDashedRoute" version="1.0.14" targetFramework="net46" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net46" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
  <package id="Moment.js" version="2.10.2" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net46" />
  <package id="NWebsec" version="5.1.1" targetFramework="net46" />
  <package id="NWebsec.Core" version="2.1.0" targetFramework="net46" />
  <package id="NWebsec.Mvc" version="5.1.1" targetFramework="net46" />
  <package id="Owin" version="1.0" targetFramework="net46" />
  <package id="Respond" version="1.4.2" targetFramework="net46" />
  <package id="Sendgrid" version="6.3.0" targetFramework="net46" />
  <package id="SendGrid.SmtpApi" version="1.3.1" targetFramework="net46" />
  <package id="Serilog" version="2.6.0" targetFramework="net46" />
  <package id="Serilog.Enrichers.Environment" version="2.1.2" targetFramework="net46" />
  <package id="Serilog.Sinks.File" version="3.2.0" targetFramework="net46" />
  <package id="Serilog.Sinks.RollingFile" version="3.3.0" targetFramework="net46" />
  <package id="Serilog.Sinks.Sentry" version="2.1.4" targetFramework="net46" />
  <package id="SerilogWeb.Classic" version="2.1.17" targetFramework="net46" />
  <package id="SharpRaven" version="2.2.0" targetFramework="net46" />
  <package id="System.Data.SQLite" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net46" />
  <package id="Twitter.Bootstrap.Less" version="3.3.4" targetFramework="net46" />
  <package id="WebActivatorEx" version="2.0.6" targetFramework="net46" />
  <package id="WebGrease" version="1.6.0" targetFramework="net46" />
  <package id="YUICompressor.NET" version="2.7.0.0" targetFramework="net46" />
</packages>

When publishing the app using VS2017 to the file system I get the following warning in the output:

The following assembly has dependencies on a version of the .NET Framework that is higher than the target and might not load correctly during runtime causing a failure: netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51. The dependencies are: System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. You should either ensure that the dependent assembly is correct for the target framework, or ensure that the target framework you are addressing is that of the dependent assembly.

But I can't find anything on System.Transactions. How can I search what's referencing it?

Sarath S Menon
  • 2,168
  • 1
  • 16
  • 21
empz
  • 11,509
  • 16
  • 65
  • 106
  • 1
    What NuGet packages are you using? Are you sure you are not referencing an ASP.NET Core one? – Ricardo Peres Apr 19 '18 at 16:10
  • @RicardoPeres VS2017 doesn't let you add a package targeting a framework different that the one the project is targetting. I've uninstalled and reinstalled all packages but the error is the same. I don't understand why it happens and even why during runtime... – empz Apr 19 '18 at 16:13
  • 3
    The `System.Data.SQLite.Core` package is based upon .NET Core (or .NET Standard, I didn't go looking for the source or docs). Look at the error message at the very end of your project file. – McGuireV10 Apr 20 '18 at 15:52
  • Why do you said is based upn .NET Core? I'm looking at the `packages\System.Data.SQLite.Core.1.0.108.0\lib` directory and it contains a folder for each version of the .NET Framework, including 4.6 which is what I'm using. I don't think that's the issue here. – empz Apr 20 '18 at 23:48
  • Also, removing the package didn't solve the issue. – empz Apr 20 '18 at 23:54
  • 3
    When I face unsolvable issues like this, what I do is 1) carefully note what are the project's reference (or save the .csproj somewhere), 2) remove packages.config file, remove all external references (alternatively you can write a new project from scratch only with the original static files, .cs, etc.), 3) configure VS Nuget to use Package Reference instead of legagy packages.config mode https://docs.microsoft.com/en-us/nuget/reference/migrate-packages-config-to-package-reference and 4) add all needed references back. Most of the time, it works and I have no clue why it failed before. – Simon Mourier Apr 24 '18 at 07:13
  • Have you recently updated some nuget package references? that might cause you some grievance – Andrei U Apr 30 '18 at 14:36
  • In my case i found out that the problematic nuget was System.Memory in version 4.5.1. when updated to version 4.5.3 it works!! – b k Jun 25 '20 at 13:59
  • I've tried all of these solutions, even the ones from the other answers. nothing works for me. it builds in visual studio, but jenkins that use msbuild v19, gets this error. do I need to upgrade msbuild? I upgraded my application to net framework 4.7.2 in hopes to solve this, but still the same thing. any ideas? – inifus Aug 03 '21 at 15:09

25 Answers25

436

I think the solution might be this issue on GitHub:

Try add netstandard reference in web.config like this:"

<system.web>
  <compilation debug="true" targetFramework="4.7.1" >
    <assemblies>
      <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, 
            PublicKeyToken=cc7b13ffcd2ddd51"/>
    </assemblies>
  </compilation>
  <httpRuntime targetFramework="4.7.1" />

I realise you're using 4.6.1 but the choice of .NET 4.7.1 is significant as older Framework versions are not fully compatible with .NET Standard 2.0.

I know this from painful experience, when I introduced .NET Standard libraries I had a lot of issues with NUGET packages and references breaking. The other change you need to consider is upgrading to PackageReferences instead of package.config files.

See this guide and you might also want a tool to help the upgrade. It does require a late VS 15.7 version though.

Wai Ha Lee
  • 8,598
  • 83
  • 57
  • 92
Quango
  • 12,338
  • 6
  • 48
  • 83
  • 9
    I think anyone who arrives here should also look at this excellent guidance on writing open source libs by the author of Newtonsoft.JSON: https://learn.microsoft.com/en-us/dotnet/standard/library-guidance/cross-platform-targeting - in particular "Avoid including a netstandard1.x" target, and use .NET 4.7.2 as the lowest real version that supports .netstandard 2.0 – Quango Nov 01 '18 at 11:42
  • 1
    Exactly what was needed when upgraded to v4.7.2 (non core app) and got an exception like the following: "The type 'DateTime' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. – Ted Nov 27 '18 at 07:03
  • 1
    Does this also have to added to the references in the csproj file, or it's only needed in the web.config? – petrosmm Dec 26 '18 at 16:32
  • 1
    Great answer. Thanks. I was in process of upgrading an old utilities package and slapped a new standard 2.0 in its place. This web app in particular had issues because the ` – Piotr Kula Mar 15 '19 at 15:32
  • In our case we had had several standard 2.0 assemblies in use by a 4.7.2 ASP.Net project but we added some JsonConverter from the System.Text.Json.Serialization namespace to one of the standard 2.0 projects and that caused this error. This solution resolved our issue. – ShaneH Apr 22 '20 at 21:12
  • 1
    I kept target 4.6.2 and it still fixed it. thanks. – Andrew Gale Apr 28 '21 at 19:14
  • In my case I needed more than this and it got frustrating so I just upgraded to 4.7.2, had to hustle a little with automatic deploy but it worked out fine. Latest is greatest although the latest would be .NET 6.0 – k4yaman Sep 09 '22 at 06:12
  • Thanks. Also worked with target 4.6.1 for me. – Paul Taylor Mar 08 '23 at 14:46
  • 1
    This also fixed the issue when referencing a netstandard2.0 library from a net48 ASP.NET project. – Daniel May 05 '23 at 19:05
  • 1
    My .net 4.7.2 solution has been working until 4.7.8 is installed without this added in the web.config. After adding this to web.config started working again. – Charasala Jul 07 '23 at 12:36
99

Manually editing the .csproj file and adding the reference below worked for me.

<ItemGroup>
    <Reference Include="netstandard" />
</ItemGroup>

Thank you to Fahad Alshaya who suggested it here.

VoronoiPotato
  • 3,113
  • 20
  • 30
kamilk
  • 3,829
  • 1
  • 27
  • 40
  • Where should this be put inside the project file? Inside which other "tag"? – Ulysses Alves Aug 13 '19 at 18:40
  • 2
    @UlyssesAlves Somewhere next to other Reference tags – kamilk Aug 14 '19 at 12:20
  • 2
    @kamilk "somewhere next to some other" is not very accurate. Well, I looked at some other projects, but unfortunately this didn't work for me and I've decided to attack this problem from another perspective, which doesn't involve changing the .net version of the project. – Ulysses Alves Aug 14 '19 at 13:14
  • 4
    This one worked for me, I also had to install the NetStandard.Library via NuGet. – David Acero Sep 23 '19 at 01:53
  • The little things that "get you"... Great answer. – Benj Sanders Oct 25 '19 at 16:38
  • 13
    That didn't work for me, but adding `` under the main web.config file's system.web/compilation/assemblies section did. I kept switching back and forth from one solution to the other, and the Reference didn't work, but the web.config setting did. I was targetting .NET 4.7.2 and MVC 5.2.7. This is a NASTY bug. – Triynko Mar 11 '20 at 23:17
  • Also, the web.config file in the Views folder is never automatically updated, so you have to manually set the correct MVC DLL version there (mine was at 5.2.2 and I had to manually change it to to 5.2.7 after my upgrade). – Triynko Mar 11 '20 at 23:17
  • Complete snippet to add to csproj file: – James John McGuire 'Jahmic' Oct 02 '21 at 08:41
  • This works for me! I wonder why would users need to resort to finding out the hard way and making unnecessary manual config changes instead of Microsoft doing something about this bug with .NET Standard? – Patee Gutee Nov 22 '21 at 04:24
70

I had to do a combination of other people's answers on this thread.

  1. Install the NetStandard.Library via NuGet
  2. Manually editing the .csproj file and adding the reference. <Reference Include="netstandard" />
  3. Expanding project-->References in the VS Solution Explorer, right clicking on 'netstandard' and showing the properties page and setting "Copy Local" to true.
Armand
  • 9,847
  • 9
  • 42
  • 75
Damien Sawyer
  • 5,323
  • 3
  • 44
  • 56
23

After upgrading from 4.6.1 framework to 4.7.2 we started getting this error:

"The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'." and ultimately the solution was to add the "netstandard" assembly reference mentioned above:

<compilation debug="true" targetFramework="4.7.1" >
    <assemblies>
      <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, 
            PublicKeyToken=cc7b13ffcd2ddd51"/>
    </assemblies>
  </compilation>
Raghav
  • 8,772
  • 6
  • 82
  • 106
  • 9
    This works. Another thing that works (without this change) is to add the `` to the csproj file, BUT... that only works if you ALSO set CopyLocal to true. None of this makes any sense. – Triynko Mar 11 '20 at 23:21
  • WebConfig entry did not helped me, it was even emitting warning that assemblies is illegal child under system.web. Installing netstandard nuget and entry in the .csproj file helped me in my 4.7.2 project. Remember to set netstandard reference to copy local from properties. – curious.netter Jan 13 '22 at 12:11
21

Deleting Bin and Obj folders worked for me.

Vijay Verma
  • 213
  • 2
  • 3
8

I have run into this before and trying a number of things has fixed it for me:

  • Delete a bin folder if it exists
  • Delete the hidden .vs folder
  • Make sure the 4.6.1 targeting pack is installed
  • Last Ditch Effort: Add a reference to System.Runtime (right click project -> add -> reference -> tick the box next to System.Runtime), although I think I've always figured out one of the above has solved it instead of doing this.

Also, if this is a .net core app running on the full framework, I've found you have to include a global.json file at the root of your project and point it to the SDK you want to use for that project:

{
  "sdk": {
    "version": "1.0.0-preview2-003121"
  }
}
Kyle Dodge
  • 834
  • 7
  • 17
8

enter image description here

Set Copy Local to true in netstandard.dll properties.

Open Solution Explorer and right-click on netstandard.dll. Set Copy Local to True.

B'ajj
  • 15
  • 2
  • 5
4

Although this is an old thread, I had the same issue today, last week I updated some NuGet packages and although the MVC website worked OK on my dev machine when I published to the testing server it failed.

I read numerous posts but none worked. I finally compared the DLL's in my local bin to those in the testing server and found that the netstandard.dll was not uploaded, once uploaded the website worked OK, not sure why VS2017 web deploy did not publish the DLL.

Just something to look out for in case none of the above work for you.

George Phillipson
  • 830
  • 11
  • 39
4

Those who are not having web.config file. Output Type other than web application. update the project file (.csproj) with below give code.

It may cause due to adding/removing the .netframework in improper way or it may broke unexpected way.

  <ItemGroup>
    <Reference Include="netstandard" />
  </ItemGroup>

Output Type

  • Console application
  • Class Library
Thiya
  • 75
  • 6
4

This is where netstandard.dll exists: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\Facades\netstandard.dll Add ref to your Project through this.

Patrick from NDepend team
  • 13,237
  • 6
  • 61
  • 92
  • Please check out the [formatting help page](https://stackoverflow.com/editing-help) to improve your formatting. – costaparas Feb 17 '21 at 10:15
  • 3
    awesome! this pointed me to the right direction: only framework 4.7.2 fully supports `netstandard2.0` without any problems: https://weblog.west-wind.com/posts/2019/Feb/19/Using-NET-Standard-with-Full-Framework-NET#net-standard-and-full-framework-net (I wished Microsoft had explained this) – Nicolas Oct 11 '21 at 09:58
2

Might have todo with one of these:

  1. Install a newer SDK.
  2. In .csproj check for Reference Include="netstandard"
  3. Check the assembly versions in the compilation tags in the Views\Web.config and Web.config.
Igor
  • 298
  • 3
  • 8
  • ok hopefully we almost there."I added the reference to NETStandard.Library instead of NETStandard.Library.NETFramework" check this post: https://github.com/dotnet/standard/issues/391 – Igor Apr 24 '18 at 20:37
  • Usually System.Transactions is not part of your references, try to add it in your references by: right click on your references if you are using Web Application or in your Project if you are using Web Site. find the System.Transactions in the .NET references. You should find the System.Transactions in your references. – Igor Apr 24 '18 at 20:50
2

I experienced this when upgrading .NET Core 1.1 to 2.1.

I followed the instructions outlined here.

Try to remove <RuntimeFrameworkVersion>1.1.1</RuntimeFrameworkVersion> or <NetStandardImplicitPackageVersion> section in the .csproj.

istrupin
  • 1,423
  • 16
  • 32
h-rai
  • 3,636
  • 6
  • 52
  • 76
2

We started getting this error on the production server after deploying the application migrated from 4.6.1 to 4.7.2.

We noticed that the .NET framework 4.7.2 was not installed there. In order to solve this issue we did the following steps:

  1. Installed the .NET Framework 4.7.2 from:

    https://support.microsoft.com/en-us/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows

  2. Restarted the machine

  3. Confirmed the .NET Framework version with the help of How do I find the .NET version?

Running the application again with the .Net Framework 4.7.2 version installed on the machine fixed the issue.

Raghav
  • 8,772
  • 6
  • 82
  • 106
2

I am facing Same Problem i do following Setup Now Application Work fine

1-

<compilation debug="true" targetFramework="4.7.1">
      <assemblies>
        <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, 
      PublicKeyToken=cc7b13ffcd2ddd51"/>
      </assemblies>
    </compilation>

2- Add Reference

 **C:\Program Files (x86)\Microsoft Visual
Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\ADL
 Tools\2.4.0000.0\ASALocalRun\netstandard.dll**

3-

Copy Above Path Dll to Application Bin Folder on web server

Mansoor
  • 107
  • 5
  • 3
    Where is this documented? How would anyone every guess to put this line in a web.config file? Incidentlly, what works equally well is adding a line to the csproj that references "netstandard", and setting CopyLocal to true. Even so, that's not even listed as a possible reference in the references dialog anywhere, so the only way to get it is to add it manually. This is insane. And I'm targeting .NET 4.7.2, which is supposed to be fully compatible with .NET standard, yet I have to do these obscure steps to get it work. – Triynko Mar 12 '20 at 15:23
1

The solution of Quango in is working but I prefer to resolve it by adding this code in my Web.config like new projects :

<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>
k4st0r42
  • 1,174
  • 1
  • 15
  • 29
0

I was facing this problem when trying to add a .NETStandard dependency to a .NET4.6.1 library, and compiling it in Linux with Mono 4.6.2 (the version that comes with Ubuntu 16.04).

I finally solved it today; the solution requires to do both of these things:

  1. Change <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> to <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion> in the .csproj file.
  2. Upgrade your mono to a newer version. I believe 5.x should work, but to be sure, you can just install Ubuntu 20.04 (which at the time of writing is only in preview), which includes Mono 6.8.0.105.
knocte
  • 16,941
  • 11
  • 79
  • 125
0

You can add to your web.config in your project.

It wouldn't work when you add it to projects web.config because it works with MVC.

Enes Okullu
  • 303
  • 3
  • 6
0

I have the same problem with a net5.0 project, which includes a buildtask written using netstandard2.0

<Project>

  <Target Name="RestoreBuildTasks">
    <MSBuild Projects="../../../BuildTasks/BuildTasks.csproj" Targets="Restore" Properties="Configuration=Release"/>
  </Target>

  <Target Name="BuildBuildTasks">
    <MSBuild Projects="../../../BuildTasks/BuildTasks.csproj" Targets="Build" Properties="Configuration=Release"/>
  </Target>

  <UsingTask
      TaskName="Brick.Build.NugetTask"
      AssemblyFile="AGXBrick/BuildTasks/bin/$(Platform)/Release/netstandard2.0/BuildTasks.dll"/>

  <Target Name="CheckNuGetSources" BeforeTargets="Restore" DependsOnTargets="RestoreBuildTasks;BuildBuildTasks">
      <NuGetTask />
  </Target>

</Project>

Where the BuildTasks.csproj looks like this

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>

I was able to resolve this by explicitly setting TargetFramework=netstandard2.0 in the MSBuild task:

    <MSBuild Projects="../../../BuildTasks/BuildTasks.csproj" Targets="Restore" Properties="Configuration=Release;TargetFramework=netstandard2.0"/>

kolis
  • 415
  • 5
  • 10
0

I got same issue, my project use .net framework 4.6.1, and when I use latest MSBuild(16.10.2) to build solution, I got an error message, e.g. ValueType ... you must reference netstandard 2.0.....

I figured it out by installing .Net SDK item, when you select this item, .NET 5.0 runtime and .NET 3.1 Runtime will be installed as well.

enter image description here

After I installed this item, I can build my project with latest MSBuild and no errors!

dawncold
  • 183
  • 1
  • 1
  • 12
0

I had the same issue that would show up every once and a while, probably due to switching branches.

Using 4.6.1. Visual studio 2019, resharper...

My solution was to manually add a new reference, browse to the netstandard.dll, add it, build (errors galore), remove the reference, build again (no errors).

user1314413
  • 103
  • 2
  • 14
0

For me it was as simple as the framework being set wrong in the web.config file.

Solution is 4.8 but the web.config was 4.5.1

From

<httpRuntime requestValidationMode="2.0" maxRequestLength="8192" executionTimeout="110" targetFramework="4.5.1" />

To

<httpRuntime requestValidationMode="2.0" maxRequestLength="8192" executionTimeout="110" targetFramework="4.8" />
0

Although I know this is an older question, I had the same issue today with You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and I came across a more up-to-date answer.

It was building locally but once I pushed it to the build server it surfaced this error. The fix for me was making sure the build agent was using VS2019 instead of the VS2015 that is on that soon-to-be-retired build server.

Bennett Elder
  • 118
  • 1
  • 8
0

We started our migration to .NETv4.7.2 in one of the branches. Then we found that one of old branches (.net 4.5.1) started to get the error in the topic. I tried different solutions:

  • clean/rebuild solution - did not helped
  • manualy remove bin/obj folder - did not helped
  • manualy remove external packages - did not helped

I ended up removing all non-versioned/ignored files. Which are *.suo and *.user mostly as all other files already removed on previous steps. And that did the job. I suppose the issue is something in *.suo or *.user files that came from another branch with newer dotnet version.

miha
  • 393
  • 3
  • 7
-1

In my case I've updated my VS 2019 to the latest version as of 05/21, but still got the same issue.

I resolved it by

  1. carefully looking at the error message The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'system.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
  2. Open .csproj file and under <ItemGroup> tag add a new <Reference> tag as below
  • <Reference Include="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  1. Follow VS prompt for a project reload, and re-build and I didn't see the same issue.
Kiran Modini
  • 1,184
  • 8
  • 5
-6

This issue is based on your installed version of visual studio and Windows, you can follow the following steps:-

  1. Go to Command Window
  2. downgraded your PCL by the following command

    Install-Package Xamarin.Forms -Version 2.5.1.527436
    
  3. Rebuild Your Project.
  4. Now You will able to see the required output
Suraj Rao
  • 29,388
  • 11
  • 94
  • 103