Posts mit dem Label C# werden angezeigt. Alle Posts anzeigen
Posts mit dem Label C# werden angezeigt. Alle Posts anzeigen

Freitag, 21. Oktober 2016

Verwenden von third-party DLL in AX2012 C# Projekten



Wenn man in einer AX2012 C# Projekt eine third-party DLL, oder ein Nuget Package verwendet möchte. Müssen diese manuell hinzugefügte werden. AX gibt euch folgende Meldung aus, wenn das Paket nicht gefunden werden kann:


This project refers to at least one nuget package missing on this computer. enable the restoration of nuget packages to download the missing file.


Hierbei kann man wie folgt vorgehen:


1.       Ladet die third-party DLL über nuget herunter oder nutzt eine bereits bestehende DLL.


2.       Fügt die third-party DLL eurer AX Klassenbibliothek über den Solution Explorer hinzu.


3.       Klickt im Solution Explorer rechts auf euer Projekt und wählt „Ordner im Datei-Explorer öffnen“


4.       Öffnet nun die .cproj Datei mit einem Texteditor


5.       Sucht nach dem XML Tag ItemGroup und fügt die rotmarkierte ItemGroup hinzu.(MyDLL.dll mit dem Namen der von eurer third-party DLL ersetzten.



6.       Speicher die Änderungen


7.       Visual Studio fragt euch nun ob die Projektdatei neu eingelesen werden soll. Die bestätigt Ihr.


8.       Fügt nun die Änderungen dem AOT hinzu in dem Ihr über den Solution Explorer mit „Add to AOT“
Somit ist die third-party DLL nun auch für das AX bereitgestellt und kann verwendet werden

Siehe auch http://daxmusings.codecrib.com/2013/07/auto-deploying-dlls-and-other-resources.html



Dienstag, 23. September 2014

Datenabrufe aus AX2012 R3 aus einer Windows App

Der AX2012 R3 bietet uns von hause aus schon einige Web Service mit deren Hilfe wir Daten aus dem AX konsumieren können. Hier bei möchte ich den QueryService Web Service hervorheben. Mit diesem lassen sich sowohl statische Querys aus dem AX ausführen als auch eigen Querys die in der Applikation definiert werden.

hier ein kleines Beispiel für eine AX Query Ausführung:












und nun das Beispiel für eine eigenes Query:



die im den Beispiel verwendeten Methode FetchData iteriert das zurück gelieferte XML und wandelt es in eine ObservableCollection des jeweiligen erwarteten Datentyps um.

Dienstag, 18. März 2014

Fehler „Mixed mode assembly is built against version „v2.0.50727“ of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information." für Visual Studio 2012 WCF Projekte gehosted von Visual Studio 2012 beheben.

Um eine Anbindung eines Archiv System an ein von Entwickeltes AX 2009 Modul zu ermöglich, ohne das eine Direkte Zugriff auf die eigentliche AX Datenbank zu gewähren. Wird von uns ein WCF Dienst eingesetzt der von einem externen Dienstleister konsumiert wird. Innerhalb des WCF Dienstes ist wurde die WCF Host Konfiguration. Um den Folgenden Eintrag erweitert:
 
<startup useLegacyV2RuntimeActivationPolicy="true">
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
Somit kann der Eigentliche Dienst ohne Probleme im Mixed assembly mode arbeiten.
Jedoch bin ich beim Testen des Dienstes immer wieder auf diesen Fehler gestoßen, wenn der WCF Dienst vom Visual Studio gehostet wurden.
Nach langen suchen bin ich auf folgende Lösung gestoßen:
 
Hier wurde die eigentliche Konfiguration angepasst, die vom Visual Studio verwendet wird. In der Standard Installation sollte die WcfScvHost.exe.config unter C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE zu finden sein. Hier wurde die WcfScvHost.exe.config um den entsprechenden Eintrag erweitert.
Meine WcfScvHost.exe.config sieht nun wie folgt aus:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
                <startup useLegacyV2RuntimeActivationPolicy="true">
                                <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
                </startup>
                <runtime>
                               <DisableMSIPeek enabled="true"/>
                </runtime>
</configuration>

Montag, 27. Januar 2014

Windows Phone 8 Gestengesteuerte Seitenwechsle

Im ersten Moment war es mir ein Rätzel wie ich einen simplen Seiten Aufruf, für Windows Phone 8 gestengesteuert implementieren sollte. Viel Beispiele und Implementieren Basieren auf dem Silverlight Toolkit für Windows Phone.
Leider ist diese Toolkit für Windows Phone 8 Obsolet, ich habe lange gesucht bis ich auf folgenden Link gestoßen bin.



Wie immer sind die einfachsten Lösungen meist die effektivste, hier wir entsprechend auf das ManipulationCompleted Event des jeweiligen Controls reagiert. Entsprechend der Bewegung Richtung kann man seinen eigenen Seiten Aufruf platzieren.

private void LayoutRoot_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e)
        {
            double dY = e.TotalManipulation.Translation.Y;
            double dX = e.TotalManipulation.Translation.X; 

            if (Math.Abs(dY) > Math.Abs(dX))
            {
                // Vertical
            }
            else
            {
                // Horizontal
                if (dX < 0)
                {
                    NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));
                }
            }
        }

Samstag, 10. August 2013

Beheben von Timeout Problemen bei Skriptausführung

Bei der Verarbeitung von Querys oder Aufruf von Methoden im AX, die ein längere Laufzeit haben. kann es vorkommen das der Timeout des WebParts überschritten wird. Um dies zu verhindern kann man den Timeout beim betreffenden WebControls erhöht werden.

using System.Web.UI;

protected void Page_Load(object sender, EventArgs e) 
{
  
 ScriptManager scripts = ScriptManager.GetCurrent(this.Page);
        if (scripts != null)
 {
   scripts.AsyncPostBackTimeout = 600; 
 } 
}
 
In diesem Source Beispiel wird der Postback Timeout vom 600 Sekunden erhöht, der Standardwert ist 90 Sekunden.

Verwendung von AX Labels im Enterprise Portal

Neben der durch Feldbezeichnungen und Feldgruppen automatisch durchgeführte Label Nutzung, können im Enterprise Portal einzelne Labes aus den Label Dateien genutzt werden. Hierfür muss die jeweilige LabelId bekannt sein und die jeweiligen Label Dateien auf dem AOS-Server ausgeliefert sein.

Grundsätzlich gibt es zwei Möglichkeiten auf die Labels innerhalb des Enterprise Portals zuzugreifen. Zum einen über das ASP .NET-Markup oder aus dem Source des jeweiligen Web oder auch User Controls.

ASP .NET-Markup

Sie können Labels von Microsoft Dynamics AX in der Markup für eines Web oder User Controls verwenden.

<%$label:@SYS1234%>

Der um für das Label nun das jeweiligen Lokalisierten Label aus AX zu verwenden. Kann das folgt  ASP.NET-Markup verwendet werden.

<asp:Label ID="Label1" runat="server" Text="<%$axlabel:@SYS1234%>"></asp:Label>

Source Code

Microsoft Dynamics AX Label können auch in Source des Web oder des User Controls verwendet werden. Hier für wird die Labels Klasse das dem Namespace Microsoft.Dynamics.Framework.Portal.UI benötigt. Diese stellt die Methode GetLabel zum auslesen des AX Labels zur Verfügung.

this.PageDefinition.pageTitle = Labels.GetLabel("@SYS131104");

siehe auch AX 2009 EP Development CookBook