davidyack / Xrm.Tools.CRMWebAPI

This is an API helper for working with the Common Data Service (CDS) Web API
MIT License
143 stars 73 forks source link

Nuget packages are misconfigured/wrong? #73

Closed simon-tamman closed 5 years ago

simon-tamman commented 5 years ago

Hi,

Great library, sorry for the hassle. I have created a class library on .NET standard that targets this library via Nuget.
However when I draw that dependency into either .NET Core or .Net Framework to perform a unit test I get this issue after drawing in the Nuget for .NET Core or Full Framework:

The type 'CRMWebAPI' is defined in an assembly that is not referenced. You must add a reference to assembly 'Xrm.Tools.WebAPI.Standard,

the Nuget for .Net Core installs a Xrm.Tools.WebAPI.Core.dll and the Nuget for full framework installs XrmTools.WebAPI. If you manually attach Xrm.Tools.WebAPI.Standard.dll it errors it contains the same type as the other assemblies. I believe that instead of having all these different assemblies there should just be one of them named one thing (e.g. XrmTools.WebAPI.dll) and the .NET Core/Full Frameworks should just draw in different implementations if they're not based on platform independent stuff.
The only way I can the current state working is if I develop wholly on .NET Core or Full Framework thereby making the .NET Standard Nuget completely useless. Sadly I have to deploy to both Framework and Core in different contexts so I don't have a solution within Nuget that's going to work for me here.

Can't help but think I'm slightly crazy and missing something simple but this is how it looks. Maybe the only immediate solution available to me is to use the sources to build my own libs?

Issue is demonstrated here (small complete example):

https://github.com/dazzul/xrm.tools.webapi.standard.lib.test

The following project doesn't build due to the existence of a type that tries to extend the base component and tries to use the CRMWebAPI type.
If that type is deleted it will build but will fail at run time stating that the .Standard.dll is missing.

davidyack commented 5 years ago

Hi Simon - no hassle, I think it was an issue mixing full and standard due to naming of the assembly I've published an update here https://www.nuget.org/packages/Xrm.Tools.CRMWebAPI/1.0.22-alpha1 it should be available in soon to try. You would need to check the Show pre-release to see it in nuget update - let me know how it works

simon-tamman commented 5 years ago

Hi david, Thank you! That now solves the problem on the framework side.
However exactly the same problem exists on the core side as well and the resolution in 1.0.22-alpha1 fixes standard => full framework but not standard => core which was also seemingly broken with the same type of issue.

Whats the primary issue, is that the .dlls are named differently or is there another facet to the issue that I can't quite discern?

davidyack commented 5 years ago

ok, yeah it probably has the same naming issue I will try to get that sorted and republished

simon-tamman commented 5 years ago

Yeah, sorry to lumber you with the issue again. Looking at the last PR I wasn't confident enough to submit one of my own to resolve it as there was more than just one change.
Was the only big deal the renaming of the file or were the other changes equally relevant?

JamesBateson commented 5 years ago

Hi. I'm getting this issue too. Would be grateful for a fix to the standard => core issue.

davidyack commented 5 years ago

Sorry for the delay been a busy month. I just uploaded 1.0.23 that has all names consistent on the assemblies - please re-open if that doesn't resolve for you

JamesBateson commented 5 years ago

Thanks. Seems to work now for me.

davidyack commented 5 years ago

Great, Thanks @JamesBateson for confirming