(Dynamics 365 for Operations was previously known as the New Dynamics AX)
Dynamics 365 for Operations Visual Studio projects allow X++ code to interact seamlessly with code written in other .Net languages.
You can reference a C# project as described in this article or reference third party .Net assemblies directly from your Visual Studio project as shown in the image below.
Once you have a reference to a .Net assembly added, an AxReference element is added to your model and the assembly (dll) is automatically copied to the bin folder of your package. For example, If you are developing in the model ISVModel1 that belongs to the package ISVPackage1:
If you are using version control, make sure you check-in both files (in the example above) to your VSTS repository, so other developers can synchronize them and the build automation system on build environments can build your code successfully.
When you create a deployable package (for deployment to sandbox or production) on a dev/build VM that has these 2 files (AxReference and assembly files) in the desired location, the deployable package will automatically contain the needed AxReference and assembly files.
I've even successfully tried to add a project reference to a C# project with assembly references added through NuGet packages. Then I verified that everything got included in deployable packages and deployed to target environments. This is something I missed a lot.
(Note that I didn't use version control for this test.)
But because I'm never satisfied... what about supporting NuGet in X++ projects?
We have deployed our solution via deployable package from LCS to acceptance test box . We are having CRM integration and we are referencing Dlls provided by them into our solution. CRM has created custom dll and inside that their solution refer Microsoft xrm sdk dlls and Microsoft crm sdks (nested dlls). Now after deploying package to box , I have started batches for integration to work and it failed with below error :
CRM AX Well Job US
Method not found: 'Void Microsoft.Xrm.Sdk.Entity..ctor(System.String, System.String, System.Object)'.
at OFS.Integration.IntgrBase.UpsertMonitorLogs(IOrganizationService crmService, String MethodName, String entityName, Guid MonitorLogId, String preProcessingStageMessage, String postProcessingStageMessage, Boolean isInsert, Nullable`1 failCount, Nullable`1 successCount, String finalStatusSummary, String CRMkey) at OFS.Integration.WellBatch.WellFetch(String CRMKey) at Dynamics.AX.Application.OFS_AXCRMWellIntegration.FetchWellDetails_US() in xppSource://Source/OFS\AxClass_OFS_AXCRMWellIntegration.xpp:line 57 at Dynamics.AX.Application.OFS_AXCRMWellIntegration.run() in xppSource://Source/OFS\AxClass_OFS_AXCRMWellIntegration.xpp:line 202 at Dynamics.AX.Application.BatchRun.runJobStaticCode(Int64 batchId) in xppSource://Source/ApplicationPlatform\AxClass_BatchRun.xpp:line 747 at Dynamics.AX.Application.BatchRun.runJobStatic(Int64 batchId) in xppSource://Source/ApplicationPlatform\AxClass_BatchRun.xpp:line 680 at Microsoft.Dynamics.AX.Batch.Batch.ExecuteOneBatchJobTask(BatchTaskInfoWrapper taskInfo)
I can see dlls in Appsuite bin folder but not able to debug and check why it is not working . But in my develop box , it is working.
your link is broken - should now point to docs.microsoft.com/.../write-business-logic
Have you found any solution, I followed the above steps and In new environment did get latest. dll exists bin folder but it is not working. If I manually copy the .dll again to package\bin folder and do IIS reset then it is working. But in Prod we can't do like this. Can you please share the info.
Thanks in advance