Archive

Posts Tagged ‘.Net integration’

Running a .Net reference code in the Server in Dynamics Ax

February 8, 2011 2 comments

We have been recently building some .Net solutions for our vertical. I have consolidated my learnings from it and publishing here as a post.

1. Adding a .Net reference can be as easy as just to drop the dll in the client bin folder and then add it. But if you want the code to execute on the server then this wont work. You will have to publish the dll in the server “GAC(Global Assembly Cache)”.  A assembly on the cache executes on the server.  Look here for articles on publishing a dll to the cache (GAC Publishing) and assigning strong name to it (Assigning Strong Key).

2. When you look at for the GACUtil, you will find it in different places in different pc. The general places to look at are,

-> C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin

-> C:\WINDOWS\Microsoft.NET\Framework\

3. Every time you change and build the solution you have to un publish/publish it to the GAC. This can be difficult to do it manually. The easiest way is to add the following lines in your Project -> Properties -> Post-build event command line  in your visual studio project.

//uninstal old version

“gacutil.exe -u $(TargetName)”

//register new version

“gacutil.exe -i $(TargetPath)”

4. Though you run the code on the GAC it is necessary that the dll is added to all the clients just for compilation. It need not be updated as you revise your dll.

5. If the code is present in a server call then it is required to restart the server every time you re publish a new version to the GAC.  What i found better was to test the code by client level execution(Through a job) and once the code is working fine you can move it to the server call.

6. If you are creating a .Net instance in a class and wanted to retain the instance as a global variable then you must declare the variable as CLRObject and not in the actual .Net namespace name(Eg: Microsoft.Dynamics.Csharp). Failing to do so results in a run time marshalling error.

Advertisements

Dynamics Ax 2009 compatibilitywith .Net 4

January 27, 2011 2 comments

I was recently developing a class library application for Dynamics Ax 2009  on Visual studio 2010. When I tried adding it  to the reference node, Ax threw an error informing that it is not a valid .Net assembly.  I had to change the version to 3.5 in the build properties of the VS Project to generate a compatible dll. I’m not sure if .Net 4 is compatible with Ax2009 but made it a note here….

Here is some compatibility information from SE Team  SE Team – Compatibility testing results but it only says Ax2009 and .Net 4 can run side by side. So guys it is good to check your .Net versions and try before you absorb it in to ax when facing a similar error.

……….

Converting a System.Xml.XmlDocument to XML type in Dynamics ax

April 18, 2010 1 comment

When interacting with .Net assemblies mostly  Xml is used to send/receive outputs from the external system. Here is a code snippet that tells how to convert a System.Xml.XmlDocument to a Xml string in Ax which you can use for further processing by classes like XmlDocument…

//CLR Objects
System.Xml.XmlDocument document;
System.Xml.XmlTextWriter textWriter;
System.IO.StringWriter   stringwriter;

//X++ Objects
Xml                      Xml
;

//call to the .Net assembly that returns a XML
document    = processINput(...argument..)

stringWriter = new System.IO.StringWriter();
textWriter   = new System.Xml.XmlTextWriter(stringwriter);

document.writeTO(textWriter);

//Converted to Ax Xml format here
xml        = stringWriter.ToString();