How to access Microsoft.xrm.sdk in .Net standard libraries - dynamics-crm

Getting various error for multiple approaches. seems not able to import xrm.sdk in other than .Net Framework.
I'm trying to import Microsoft.xrm.sdk in .Net standards. but I couldn't find anything
compatible
(not compatible). I have tried the following reference
Microsoft.CrmSdk.XrmTooling.CoreAssembly
Microsoft.Xrm.Sdk (2015)
Microsoft.Xrm.Sdk (2011)
Package import Failed: NU1202: Package Microsoft.CrmSdk.CoreAssemblies 9.0.2.24 is not compatible
with netstandard2.0 (.NETStandard,Version=v2.0). Package Microsoft.CrmSdk.CoreAssemblies 9.0.2.24
supports: net462 (.NETFramework,Version=v4.6.2)
Package restore failed.

That is correct. The Dynamics 365 SDK requires the full .NET Framework.
On a related note, Microsoft has released an alpha version of the .NET Core-compatible SDK.

Related

Xamarin form: Does this give limitation access the libraries

I have a problem with these packages which I wanted to use on my Xamarin form using .net standard 2.0
Package 'ExifLib.PCL 1.0.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Package 'Microsoft.Bcl 1.1.6' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Package 'Microsoft.Bcl.Async 1.0.165' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Package 'Mobilist.AdvancedTimer.Forms.Plugin 1.0.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Package 'PCLStorage 1.0.2' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Package 'Rg.Plugins.Popup 1.0.4' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Does that mean I can't use this library any more?
Does that mean I can't use this library any more?
No, you should be able to use nearly all libraries that are PCL spec compliant inside of a .NET Standard 2.0 class library. You can checkout the .NET documentation to see list of PCL profiles with their supported platform and their corresponding .NET Standard supported version.
Package warning explanation
With .NET Standard 2.0 and the updated tooling in .NET Core SDK 2+ the .NET team wanted to make it easier to update or make use of .NET Standard libraries. The issue is that not all NuGet packages have been updated to support a version of .NET Standard. So they introduced a fallback targeting .NET Framework 4.6.1 which is nearly 100% compliant with .NET Standard (There are some API that are in the .NET Standard 2.0 spec that are not in .NET Framework 4.6.1 but they can be brought in via NuGet packages if required). So the warning you see is to inform you that the packages do not conform to a .NET Standard version you are targeting and as such may contain API's that are not executable in your runtimes making use of your .NET Standard 2.0 library.
Once you have tested that everything is working as expect you can add the NoWarn="NU1701" to your PackageReference in your csproj which will remove the warning. One thing to note adding NoWarn="NU1701" to a individual package does not remove the warning for dependencies. To remove those warning you must either include them as PackageReferences (via NuGet) or ignore NU1701 warning at a project level.
If you run into fallback issues you can adjust the target framework fallback via overriding the AssetTargetFallback in your csproj to something like:
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wpa81;</AssetTargetFallback>

Using Microsoft.CrmSdk.XrmTooling.CoreAssembly in .netstandard1.6 class library

Are Dynamics CRM SDK assemblies compatible with the new .netstandard1.6 or older standards? I'm trying to use the Microsoft.CrmSdk.XrmTooling.CoreAssembly nuget package in a .netstandard class library. Are there any plans to make those libraries compatible with .netstandard 1.6 or 2.0 in future. Could not find the answer anywhere.
Currently no they only support .net 4.5. They may support .netstandard at some point in the future, but that would be speculation.
An easy way to tell currently is by looking at the NuGet package page and checking dependencies. For example another package CSVHelper supports .netstandard
While the SDK tooling package does not

How to check the platforms a package is supported?

When I tried to install a package to a UWP project, it gave this error:
Install-Package : Package QuickFix.Net 1.7.0 is not compatible with uap10.0 (UAP,Version=v10.0). Package QuickFix.Net 1.7.0 supports: net (.NETFramework,Version=v0.0)
At line:1 char:1
But nothing on the package page indicts that it cannot be used with uwp, how can I check that what platforms a given package is supported?
The content on package page provided by the package author. So if the author doesn't statement what platform the package doesn't support, there will not have such content on package page. But author often statement what platform the package supports.
For example, following statement query on QuickFix.NET package means this package is used for .NET platform development. So the UWP app which used UAP platform could not use this .NET platform package.
QuickFIX/n attempts to keep the same robustness and conformance of
QuickFIX with a similar API while bringing native performance and
idiomatic usage to .NET.

Cannot import Oracle Client in ASP.NET Core RC2

With the new dotnet core, we can no longer import our referenced dlls externally, and instead have to get through a Nuget feed. I am trying to get Oracle.ManagedDataAccess Nuget package to work with my project, but no luck so far.
Here's the error in my project.json file:
Says The dependency Oracle.ManagedDataAccess >= 12.1.24160419 could not be resolved.
This is the error from Package Manager output:
Project Oracle.ManagedDataAccess is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Project Oracle.ManagedDataAccess supports: net451 (.NETFramework,Version=v4.5.1)
Does this mean I can no longer use this package? From what I've read so far, dotnet core does not support .net framework v4.5.1. If that is indeed the case, what are some alternatives I can use to connect to Oracle database?
I just looked at Oracle.ManagedDataAccess NuGet package and I don't think it can run on CoreClr. First, it has a dll that targets only net40 so it is likely it uses some APIs not available in CoreClr/CoreFx or relies on things being in the box/GAC. Second, it has native binaries in bin\x64 and bin\x86 subfolders. I think even if you forced this package into a netcoreapp1.0 it may not work. If they use DllImport attribute to import these dlls CoreClr will not be able to find them because the structure of a package containing native assets is a bit different in the new world. In my opinion because of this dependency your application should just target full .NET (e.g. net451 or newer).

How to install SignalR.Client.NET35 to a project

I am using SignalR 0.5.3, installed via NuGet, for my .NET 4.5 Web Application - now, since I need to push data from SQL SERVER 2008R2 (supporting only the .NET Framework up to 3.5), I need to create a library using the SignalR .NET 3.5 Client.
I have seen in the project website that there is probably a SignalR.Client.NET35 version but (being not very familiar neither with github nor with NuGet) I have no clue how to install that client for the library project I have to work on.
I have tried installing with the std command install-package SignalR.Client but the message i get is:
Install-Package : Could not install package 'SignalR.Client 0.5.3'.
You are trying to install this package into a project that targets
'.NETFramework,Version=v3.5', but the package does not contain any assembly
references that are compatible with that framework.
For more information, contact the package author.
so it looks like the right .NET version is not picked correctly/out of the box.
Before bothering the author, i thought to give a try round here.
Any suggestions?
We haven't packaged the 3.5 client into the package as yet. You'll need to build from source.
I backported the v1.x and v2.x SignalR clients to NET 3.5. Available as NuGet packages here: http://www.nuget.org/packages/Nivot.SignalR.Client.Net35/

Resources