I'm using the Roslyn library to execute dynamic c# scripts:
https://github.com/dotnet/roslyn/
For some reason, it only works on .NET framework 4.6. Upgrading to 4.7.1 throws the following errors:
FileNotFoundException: Could not load file or assembly
'System.Runtime, Version=4.0.20.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The
system cannot find the file specified.
I have updated and reinstalled the Nuget package:
Install-Package Microsoft.CodeAnalysis.CSharp.Scripting
Any ideas what could be wrong?
UPDATE
I read that creating a .Net Standard project and implementing Roslyn there while referencing the project solves the issues. I did not find this to work at all
Related
I have a DLL compiled from a project of type "Class Library" which has a target framework of netcoreapp3.1 (EDIT: now netstandard2.0).
I then reference this DLL in another project, a Windows Forms application, which targets .NET Framework 4.7.2 (EDIT: now 4.8).
When trying to compile the Windows Forms application, I get the following error:
Error CS1705: Assembly 'BC' with identity 'BC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Runtime, Version=4.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'System.Runtime' with identity 'System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
I would like to update System.Runtime on the WinForms project to use version 4.2.2.0 (which is apparently required by my DLL), however, I found no way to do so - there are no NuGet packages installed and the references section in Visual Studio doesn't seem to include System.Runtime directly:
How do I update System.Runtime and resolve the error?
Try any of the following:
Upgrade your WinForms project to .NET 4.8, because there have been a lot of compatibility fixes in that release. .NET 4.8 still has issues when interfacing with .NET Core libs, but many problems will just be gone.
Or try changing your library to .netstandard2.0. Then it should always be compatbile to Net Framework.
For best compatiblity, try doing both: Setting the library to .netstandard2.0 and change the WinForms app to .NET 4.8.
I have asp.net core project which runs on Asp.Net Core V2.1.0 which has signal r integrated. I have downloaded a sample project from aspnetbrolerplate. When I try to run the application it gives me following error.
System.IO.FileNotFoundException: 'Could not load file or assembly 'System.Memory, Version=4.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.'
Can anyone please suggest me possible solution for this issue.
I found installing the System.Memory NuGet package resolves the issue.
It is confusing that earliest version is 4.5.1, but if you install it, you will find the assembly versioned a System.Memory, Version=4.1.0.0.
For my .NET Framework project I installed NuGet version 4.5.4 which contains System.Memory, Version=4.0.1.1 assembly.
I found that this is a known issue for UWP. Update to Asp.Net Core 2.1.1 and Microsoft.AspNetCore.SignalR.Client NuGet Package to at least 1.0.1, which has a fix for this UWP issue.
Maybe it also fixes your issue.
I have been getting the below error everytime I try to build a Xamarin Forms App.
Does anyone have a solution to this error.
I have uninstalled and reinstalled VS2017 two times.
I have deleted all the folder to do a clean install.
Severity Code Description Project File Line Suppression State
Error The "Xamarin.Forms.Build.Tasks.GetTasksAbi" task could not be loaded from the assembly C:\Users\Regardt.nuget\packages\xamarin.forms\3.0.0.446417\build\netstandard2.0\Xamarin.Forms.Build.Tasks.dll. Could not load file or assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified. Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. App2.Android
Download and install .NET Framework 4.7.1 or 4.7.2 then seemed to resolve the issue.
Microsoft .NET Framework 4.7.1 (Offline Installer):
https://www.microsoft.com/en-us/download/details.aspx?id=56116
Microsoft .NET Framework 4.7.2 offline installer for Windows:
https://support.microsoft.com/en-us/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows
I have a netstandard20 project that references a .Net 4.6 Project, all compiles and runs except where I call any functionality in the .Net 4.6 project, I get the following error.
FileNotFoundException: Could not load file or assembly 'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.
In VS 2017, in the project explorer under Dependancies / SDK / Microsoft.NETCore.App I can see System.Data.dll and System.Data.Common.dll but no reference to System.Data.Linq.dll, I am assuming this is my problem and it has not been pulled in.
How do I get my project to include System.Data.Linq.dll?
If I include C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.Data.Linq.dll I get the following error
BadImageFormatException: Could not load file or assembly 'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)
I was able to solve my need to use System.Data.Linq in a .NET Standard 2.0 library by using the Mindbox.Data.Linq NuGet package.
After installing it you should be able to use the System.Data.Linq namespace just like you could when writing for .NET Framework!
System.Data.Linq is not part of .NET Standard 2.0 and .NET Core 2.0 and therefore cannot be used on that platform.
Even tough you have been able add a reference to a .NET 4.6 project via the compatibility shims, it fails at runtime because of a feature that is not available on the target runtime
I have a .net standard 1.4 project which I am referencing via project reference from a .net 4.6.1 project.
When I run I get the following message:
System.IO.FileNotFoundException: 'Could not load file or assembly 'System.Threading.Thread,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or
one of its dependencies. The system cannot find the file specified.'
I can work around this by referencing the nuget package for System.Threading.Thread version 4.3.0. But for some reason this is actually version 4.0.1.0 which then means I need a binding redirect.
Adding a binding redirect gets me past this issue and onto the next one. Which is:
System.IO.FileNotFoundException: 'Could not load file or assembly
'System.IO.FileSystem, Version=4.0.1.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The
system cannot find the file specified.'
Do I need to manually add packages (and potentially binding redirects) for all of the dependencies of my .net standard packages? This doesn't seem to be what was sold. Whats the point of .net standard if I have to ship with all the assemblies it needs even through these are already included in the GAC in the .net framework I am targeting. I can't see how this can be sold as .net standard 1.4 is compatible with .net 4.6.1 if by compatible you mean as long as you don't use .net 4.6.1 BCL libraries.
The following issue seems to be related https://github.com/NuGet/Home/issues/4488
However I have tried the suggested work around there. Which is to add:
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
to the .net 4.6.1 project. I tried this and it made no difference.
UPDATE
After adding the following to my .net 4.6.1 project:
<PackageReference Include="Legacy2CPSWorkaround" Version="1.0.0">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
I now have System.IO.FileSystem in my output directory however its the wrong version. It's 4.0.2.0. Again I can resolve this using an binding redirect but I shouldn't need to.
I don't know where this 4.0.2.0 dll came from because it's not in my packages folder so it can't have come from nuget?