Subscribe: DotNetGerman Bloggers
http://blogs.dotnetgerman.com/mainfeed.aspx
Added By: Feedage Forager Feedage Grade B rated
Language: German
Tags:
active  angular  die  für  meetup  microsoft  net core  net  new  studio  und  user  via  visual studio  visual  wie 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: DotNetGerman Bloggers

DotNetGerman Bloggers



Alle Blogs von DotNetGerman.com



Copyright: Copyright 2004-2014 DotNetGerman.com
 



Einführung in Node, Folge 12: Unit-Tests schreiben

Mon, 27 Mar 2017 10:27:00 +0200

Für das Erreichen einer hohen Codequalität sind Unit-Tests nahezu unverzichtbar. Zum Schreiben und Ausführen der Tests stehen verschiedene Frameworks zur Auswahl, unter anderem Mocha. Wie funktioniert es?



C# 7: Literale

Mon, 27 Mar 2017 09:36:26 Z

Numerische und binäre Literale erhielten ein Trennzeichen zur lesefreundlicheren Darstellung.

The post C# 7: Literale appeared first on Norbert Eder.




Shopping Demo App (Xamarin + Azure)

Mon, 27 Mar 2017 06:00:26 Z

Die Shopping Demo App ist eine Beispiel-App für die Verwendung durch die Kunden unter Android, iOS und UWP, die eine ganze Reihe von Azure-Diensten nutzt. Sieh dir den Code an, um zu erfahren, wie du schnell eine Authentifizierung hinzufügst, Benutzern das Kaufen und Verkaufen von Artikeln erlaubst und Push Benachrichtigung zu Kontoaktualisierungen sendest und empfangen kannst – und natürlich wie du mit der Emotionserkennung deiner App zu einer guten Bewertung verhilfst.



Links for 2017-03-26 [del.icio.us]

Mon, 27 Mar 2017 00:00:00 -0700

  • New employee quick start guide - Microsoft Tech Community
    When a new employee joins, it is important for the company to enable that employee to quickly onboard to their role. As part of the ramp up process, admins are often asked to help the end user understand and use the available software & tools including Office 365. via Pocket
(image)



Links for 2017-03-25 [del.icio.us]

Sun, 26 Mar 2017 00:00:00 -0700

(image)



Links for 2017-03-24 [del.icio.us]

Sat, 25 Mar 2017 00:00:00 -0700

(image)



Erstelle herausragende, cloudfähige Mobile Apps noch schneller!

Fri, 24 Mar 2017 08:30:04 Z

Jede Mobile App muss verbunden sein Erstelle ansprechende, komplett native Android-, iOS- und Windows-Apps, und nutze dabei die Back-End-Bausteine für das Skalieren und Erweitern. Sieh zu, wie Xamarin und Azure dich bei der Entwicklung leistungsstarker Mobile Apps unterstützen.



Links for 2017-03-23 [del.icio.us]

Fri, 24 Mar 2017 00:00:00 -0700

  • SharePoint Security and Microsoft PowerShell | Sharegate
    Combining a powerful tool by the name of PowerShell with an equally powerful platform such as SharePoint, the results can be extremely beneficial. However, many users struggle to wrap their head around this duo, and are left feeling unsure where exactly to start. via Pocket
  • New Features and a Brand New Look for Sharegate | Sharegate
    Our team has been simplifying and redesigning your Sharegate experience so that it is now easier to use than ever before. via Pocket
  • b64.io - image optimisation & base64 encode
    Upload your image(s) on b64.io : we optimize and encode in base64. You can give us png, jpg, gif or svg files. Pssst, we don't keep any files or personal data on our server. Any question? Tweet here. via Pocket
  • 302 Found
    The SharePoint Framework has been generally available in SharePoint Online as of February 23rd. It is currently rolling out to all global Office 365 tenants. via Pocket
(image)



Windows-Batch: Verzeichnisse älter als n Tage löschen

Thu, 23 Mar 2017 14:36:48 Z

Dieser Beitrag zeigt, wie Verzeichnisse, die älter als n Tage sind, per Windows Batch gelöscht werden können.

The post Windows-Batch: Verzeichnisse älter als n Tage löschen appeared first on Norbert Eder.




AIT Apply Company Policy 1.4.0

Thu, 23 Mar 2017 08:51:01 Z

Die neue Version 1.4.0 unseres Tools Apply Company Policy ist verfügbar! Das entsprechende NuGet-Paket wurde ebenfalls veröffentlicht. Die neue Version beinhaltet einen Bugfix und eine Vereinfachung des Buildprozesses, um selbst eigene Company Policies zu erstellen. Wollen auch Sie ganz einfach Ihre eigene Company Policy als NuGet-Paket bereitstellen? Dann schauen Sie einfach mal in das Repository […]



Dev Essentials: Kostenlose Tools, Clouddienste und Schulungen

Thu, 23 Mar 2017 06:00:46 Z

Holen dir sich alles, was du zum Erstellen und Bereitstellen Ihrer App auf beliebigen Plattformen benötigen. Dank hochmoderner Tools, Cloudleistung, Schulungen und Support ist dies unser bislang umfassendstes kostenloses Angebot für Entwickler.



Links for 2017-03-22 [del.icio.us]

Thu, 23 Mar 2017 00:00:00 -0700

(image)



Visual Studio 2017 Launch bei der .NET User Group Koblenz

Wed, 22 Mar 2017 13:39:39 +0100

Update 23.03.2017: Das Treffen ist am 23.03 2017 und nicht wie ursprünglich geschrieben am 24.03.

Am 7. März 2017 veröffentliche Microsoft pünktlich zum 20. Geburtstag von Visual Studio die neue Version 2017.

Bei der .NET User Group Koblenz werden wir aus diesem Anlass am 23. März 2017 um 19:00 Uhr ein Treffen abhalten, bei dem Eric Berres und ich die wichtigsten neuen Features vorstellen werden, mit denen Entwickler noch produktiver werden.

Unter anderem werden wir folgendes besprechen:

  • Visual Studio 2017 Installer / Workloads
  • Schnellerer Start von Visual Studio 2017 dank Lightweight Solution Load
  • Neue Refactorings in Visual Studio
  • ASP.NET Core und Docker
  • Live Unit Testing in Visual Studio 2017
  • Xamarin in Visual Studio 2017

(image)

Für alle Microsoft MSDN Abonnenten gibt es übrigens auch noch ein kleines Geschenk seitens Microsoft: Ein Visual Studio 2017 Geburtstags-T-Shirt. Sollten wir nicht genug Shirts für alle Teilnehmer haben, dann werden diese nach dem Prinzip: First-Come, First-Serve ausgeteilt.

(image)

Weitere Details gibt es auf der Webseite der .NET User Group Koblenz

(image)



Jetzt NEU: Learning Paths auf MVA

Wed, 22 Mar 2017 09:46:50 Z

Lernpfade sind Kurse, die dir von der Microsoft Virtual Academy (MVA) zur Verfügung gestellt werden, um dir zu helfen, deine Kompetenz in den neuesten Technologien zu erhöhen. Erlange wertvolle Fähigkeiten durch Video-Tutorials, Demos, Assessments und vieles mehr. Plus, verdiene MVA-Abzeichen für abgeschlossene Lernpfade und teile sie per E-Mail oder Social Media wie LinkedIn, Twitter und Facebook.



Links for 2017-03-21 [del.icio.us]

Wed, 22 Mar 2017 00:00:00 -0700

(image)



Spare Zeit mit dem Xamarin.Forms Previewer

Tue, 21 Mar 2017 12:42:58 Z

Einer der zeitaufwändigsten Teile der Entwicklung ist der Build- und Run-Zyklus, oder die Zeit zwischen dem Schreiben einer Codezeile und dem Beobachten, wie der Code ausgeführt wird. Echtzeit-Feedback macht die Entwicklung schneller und einfacher für Entwickler. Xamarin.Forms Previewer erstellt eine Live-Vorschau einer Seite nebeneinander mit dem XAML-Markup, so dass du deine Benutzeroberfläche zum Leben erwecken kannst, während du codest. 



Links for 2017-03-20 [del.icio.us]

Tue, 21 Mar 2017 00:00:00 -0700

(image)



Der neue Router für Angular im Detail betrachtet - Material von Workshop von den Angular Days, März 2017 in München

Tue, 21 Mar 2017 00:00:00 +0100

Nachfolgend das Material vom Workshop "Der neue Router für Angular im Detail betrachtet" von den Angular Days, März 2017 in München:




Vergleich der Prozessmodelle TFS und VSTS

Mon, 20 Mar 2017 08:00:25 Z

Änderungen an den Prozessvorlagen von TFS und VSTS sind nichts Ungewöhnliches und kommen in unterschiedlichen Ausprägungsstufen vor. Während im Team Foundation Server die Prozess-Templates in xml-Dateien hinterlegt werden, unterliegen in den Visual Studio Team Services die Vorlagen einer anderen Architektur, … Weiterlesen



Einführung in Node, Folge 11: Code analysieren

Mon, 20 Mar 2017 07:38:00 +0200

Der gleiche Code kann unterschiedlich aussehen. Das beginnt bei der Formatierung und dem verwendeten Stil, führt dann zur Wahl der Sprachkonstrukte und endet schließlich bei der Frage, wie Elemente zu bezeichnen sind. Pair Programming und Code Reviews sind zwei Möglichkeiten, für einheitlichen Code zu sorgen. Wie lässt sich das durch Werkzeuge unterstützen?



Fehlendes ISO-Setup für Visual Studio 2017 sorgt für Ärger

Mon, 20 Mar 2017 07:33:00 +0200

Den neuen Visual Studio 2017-Installer gibt es derzeit nur noch als Webinstaller.



Angular Datenbindung unter der Motorhaube - Material von Workshop von den Angular Days, März 2017 in München

Mon, 20 Mar 2017 00:00:00 +0100

Nachfolgend die Unterlagen von meinem Workshop "Angular Datenbindung unter der Motorhaube", den ich im März 2017 in München auf den AngularDays gehalten habe.




VSTS/TFS: Vereinfachte Administration bei der Zuweisung von Iterationen zu Teams

Fri, 17 Mar 2017 11:09:00 Z

Im VSTS/TFS müssen immer wieder die gleichen Iterationen den verschiedenen Teams eines Team Projects zugewiesen werden. Dies ist mit viel manuellem Aufwand verbunden und kostet wertvolle Zeit. Mit Hilfe eines PowerShell-Skripts kann diese Zuordnung jetzt auch automatisch erfolgen. PowerShell Script Relate-VstsIteration Bisher ist es sehr mühsam gewesen, die einzelnen Iterationen einem Team zu zuordnen. Jede […]



Von Technologien bis hin zu Geschäftsmodellen – Tag 2 @ BCW17

Fri, 17 Mar 2017 07:19:46 Z

Auch der zweite Tag ging beeindruckend los. Dr. Dirk Hoheisel von Bosch zeigte eingängig, wie uns das Auto als persönlicher Assistent im Alltag zur Hand gehen kann. Dabei muss man keine umständlichen Bedienelemente kennenlernen, sondern spricht mit dem Auto in natürlicher Sprache. Der persönliche Assistent ist aber nicht aufs Auto begrenzt. Während durch die Nachricht […]



Speedtests vom Coworking auf Teneriffa

Fri, 17 Mar 2017 00:32:33 Z

Wie versprochen veröffentliche ich die Speedtests aus Teneriffa. Im Apartment, welches ich über Airbnb gebucht habe, ist das Internet in Ordnung. Der Upload ist noch ausbaufähig und sporadisch treten Probleme mit Skype auf. Bisher konnte ich dies allerdings nur abends feststellen, was unter Umständen damit zu tun hat, dass dann viele gleichzeitig auf das Internet zugreifen. …(image)



Visual Studio 2017: Git failed with a fatal error

Thu, 16 Mar 2017 13:26:26 Z

Die Git-Unterstützung läuft unter Visual Studio 2017 im Admin-Mode nicht. Hier ist die Lösung.

The post Visual Studio 2017: Git failed with a fatal error appeared first on Norbert Eder.




IoT ist nicht die Island of Things – Tag 1 @ BWC17

Thu, 16 Mar 2017 10:16:36 Z

Es soll eine große Show werden. Soviel ist bereits im Eingangsbereich zur Bosch Connected World 2017 ersichtlich. Vor dem Konferenzgebäude steht ein Mercedes E400 mit der Aufschrift “Community-based Parking”. Dahinter versteckt sich die Idee ein Fahrzeug als IoT-Sensor zu nutzen, um freie Parkplätze an eine Plattform zu melden, um so die Parkplatzsuche in Großstädten erheblich […]



Lazy Loading with Angular - Material from Talk at ng-nl in Amsterdam, March 2017

Thu, 16 Mar 2017 00:00:00 +0100

Below you find my slides and sample from my talk about Lazy Loading with Angular from ng-nl in Amsterdam (March 2017):




C# 7: Tuples

Wed, 15 Mar 2017 11:42:01 Z

Tuples erfuhren in C# 7.0 große Veränderungen. Dieser Beitrag liefert alles Wissenswerte - und natürlich Beispiele.

The post C# 7: Tuples appeared first on Norbert Eder.




Bitfelder + funktionale Programmierung = Tic-Tac-Toe

Wed, 15 Mar 2017 11:23:00 +0200

Tic-Tac-Toe ist ein höchst langweiliges Spiel. Sofern keiner der beiden Spieler einen Fehler macht, endet das Spiel stets unentschieden. Interessanter ist die Frage, wie sich auf einem Spielfeld ermitteln lässt, ob einer der beiden Spieler eine Reihe gebildet hat. Bitfelder und ein Blick auf die funktionale Programmierung helfen.



Access DevCon Vienna

Wed, 15 Mar 2017 07:30:00 Z

Microsoft Access hält sich hartnäckig als Weltmarktführer bei Desktop-Datenbanken. Vor kurzem wurde es daher zu weiteren Office 365-Abos hinzugefügt und bekommt zusätzliche E-Commerce-Datenquellen. Mit der Access DevCon Vienna gibt es für professionelle Access-Entwickler ein neues Gipfeltreffen der Access-Gurus. Die Access DevCon Vienna wird am 1./2.4.2017 in Wien stattfinden. Da die Vortragenden und Teilnehmer aus mehr...



Happy Birthday, Docker! Feiert mit uns!

Tue, 14 Mar 2017 12:19:37 Z

Diese Woche wird Docker genau 4 Jahre alt. Zu diesem Anlass veranstaltet die Docker Community in zahlreichen Ländern ein spezielles Geburtstagsmeetup. Auch in Wien wollen wir mitfeiern! Docker Vienna wird zum Geburtstag das Meetup wieder aufleben lassen. Der Auftakt beginnt am 27. März 2017 bei uns im Microsoft Office.



Agile is dead…

Tue, 14 Mar 2017 08:00:04 Z

Letzte Woche war ich zu Gast beim Agile Meetup Munich und durfte einen kurzen Vortrag zum Thema Agilität halten. Der Vortrag wurde aufgezeichnet und auf YouTube veröffentlicht. Wenn Ihr also 10min übrig habt, dann schaut gerne rein. Viel Spaß! Mein … Weiterlesen



Wie man einen Q&A Bot für Microsoft Teams erstellt ohne eine Zeile zu coden

Mon, 13 Mar 2017 13:15:00 Z

Du willst einen Q&A Bot für Microsoft Teams erstellen? Und das ohne eine Zeile Code zu schreiben? Dann bist Du hier genau richtig!



Einführung in Node, Folge 10: Praxisbeispiel

Mon, 13 Mar 2017 08:17:00 +0200

Express und Middleware, Callbacks und Events, der Zugriff auf das Dateisystem und MongoDB sind inzwischen bekannt. Doch wie entsteht aus all den einzelnen Bausteinen eine integrierte Anwendung? Ein Praxisbeispiel zeigt Schritt für Schritt, wie man eine Anwendung in Node entwickelt und strukturiert.



Integrate Meetup events on your website

Mon, 13 Mar 2017 00:00:00 Z

This is a guest post, written by Olivier Giss about integrating Meetup events on your website. Olivier is working as a web developer at algacom AG in Basel and also one of the leads of the .NET User Group Nordwest-Schweiz For two years, I am leading the .NET User Group Nordwest-Schweiz with Jürgen Gutsch that owns this nice blog. After a year, we decided also to use Meetup to get more participants. Understanding the problem But with each added platform where we post our events, we increased the workload to keep it all up to date. Jürgen had the great idea to read the Meetup events and list them on our own website to lower the work. This is exactly what I want to show you. The Meetup API Before we start coding we should understand how the API of Meetup is working and what it does offer. The API of Meetup is well documented and supports a lot of data. What we want is to get a list of upcoming events for our meetup group and display it on the website without to be authenticated on meetup.com. For our goal, we need the following meetup API method: GET https://api.meetup.com/:urlname/events The parameter “:urlname” is the meetup group name. In the request body we could sort, filter and control paging what we don’t need. If we would execute that query, you get an authorization error. However, we don’t want that the user must be authenticated to get the events. To get it to work we need to use a JSONP request. Let’s getting it done The simplest way doing a JSONP request is using jQuery: $.ajax({ url: "https://api.meetup.com/Basel-NET-User-Group/events", jsonp: "callback", dataType: "jsonp", data: { format: "json" }, success: function(response) { var events = response.data; } }); Be aware: JSONP has some security implications. As JSONP is really JavaScript, it can do everything that is possible in the context. You need to trust the provider of the JSONP data! After that call, we are getting the data from the Meetup API which can be used with simple data binding to display it on our website. You can choose any kind of MV* JS framework to do that. I used AngularJS.

As you can see everything is One-Way bound because the data is never changed. The “ng-bind-html” binds HTML content from the meetup event description. The Angular controller is simple, it uses the "$sce” service to ensure that the provided HTML content from the meetup API is marked as secure. When we change a model outside of angular, we must notify our changes with “vm.scope.$apply()”. (function () { var module = angular.module('app', []); module.controller('MeetupE[...]



Visual Studio 2017: Sprache ändern

Fri, 10 Mar 2017 21:48:03 Z

Du willst Visual Studio 2017 in einer anderen Sprache verwenden? Dieser Beitrag zeigt dir, wie du zusätzliche Sprachen installieren und auswählen kannst.

The post Visual Studio 2017: Sprache ändern appeared first on Norbert Eder.




C# 7: Out Variablen

Fri, 10 Mar 2017 14:23:04 Z

out-Parameter gibt es in C# schon ewig, die Handhabe war bisher jedoch immer etwas klobig. Mit C# 7 wurden einige Änderungen vorgenommen, die eine einfachere Verwendung ermöglichen.

The post C# 7: Out Variablen appeared first on Norbert Eder.




Ich wette du hast nie geglaubt ich fahr, jetzt coworke ich schon ein Jahr auf Teneriffa

Fri, 10 Mar 2017 13:58:50 Z

Versuch der #Effizienzsteigerung durch #Coworking in #Teneriffa(image)



How to truncate a horizontal floating list

Fri, 10 Mar 2017 00:00:00 Z

If you want to implement a horizontal breadcrumb navigation to your webpage, there are a few possibilities. One of the recommended one is using an unordered list and let these entries float.




Plattformübergreifende Produktivität mit Xamarin

Thu, 09 Mar 2017 23:00:04 Z

In der Episode 3 haben wir uns Kevin Ashley, einen Architect Evangelist (Microsoft USA), ins Boot geholt und in Kooperation mit MSDN Microsoft Magazine stellen wir euch heute diesen Beitrag zur Verfügung. (Episode 3) Dieser Beitrag ist Teil einer Xamarin University Serie und erscheint immer am Freitag.



Neues zu Powershell in Österreich

Thu, 09 Mar 2017 08:09:38 Z

Seit geraumer Zeit gibt es in Österreich ja eine Powershell User Group. Siehe dazu auch Du willst wissen wie Dir Powershell helfen kann Deinen Job besser zu machen? Diesen Monat haben Roman und Patrick wieder fleißig Infos für Euch zu Powershell gesammelt, zum Beispiel: http://www.powershell.co.at/powershell-schnipseljagd-0617/ Infos über die neue Microsoft Powershell Homepage Das neue SQL...



Zeitlose Programmiersprachen

Wed, 08 Mar 2017 10:13:00 +0200

Die Auswahl an Programmiersprachen wächst seit einigen Jahren wieder rasant. Wer sich abseits der tagtäglich genutzten weiterbilden und über den Tellerrand schauen möchte, steht vor der Frage, welche Sprache den größten Erkenntnisgewinn bringt. Vier Vorschläge.



Mit Künstlicher Intelligenz die User Experience verbessern

Tue, 07 Mar 2017 20:00:19 Z

… so lautet mein erster Blogeintrag auf AISOMA Analytics: AISOMA Analytics Blog



Visual Studio 20th Anniversary

Tue, 07 Mar 2017 08:00:31 Z

Heute ist es also soweit. Visual Studio wird 20Jahre alt und beschenkt sich  selbst mit einer neuen Version – Visual Studio 2017. Microsoft schmeißt eine 2-tägige Party und alle sind eingeladen. Heute und morgen stellen Scott Hanselman, Brian Harry, Miguel de … Weiterlesen



Server Side Rendering with Angular 4

Tue, 07 Mar 2017 00:00:00 +0100

p a { text-decoration: underline } Big thanks to Rob Wormald who provided an example that helped me to understand how server side rendering can be used in Angular 4, answered some open questions and took the time to review the article. Further big thanks to my buddy Hans-Peter Grahsl who helped me to improve this article. Especially for consumer apps, server side prerendering brings back the benefits of classical web sites without forgoing the advantages of modern JavaScript solutions. It leads to faster loading times which in turn may cause higher conversion rates. It also allows for social links with previews of a web site and it might even help with SEO as search engines are dealing with server side rendered content for more than two decades. That being said, search engines like Google are constantly improving when it comes to indexing JavaScript solutions. Since its first days, Angular is supporting this option. For Version 2 one could use the community project Angular Universal. As server side rendering is considered a strategic feature for Google's SPA-Flagship, the product team decided to include a refactored version directly into the framework. Beginning with Angular 4, this version is available. In this article I'm describing the necessary steps to extend an existing Angular 4 application with server side rendering. I'm using a webpack configuration which has been generated by means of the Angular CLI. The full example can be found here. Server side rendering brings additional complexity to a solution. Therefore, I would recommend to only use it when in need of its advantages. Ejecting the Angular CLI If you are using the Angular CLI you have to eject it, to get the possibility to adopt your build process by leveraging webpack: ng eject Make sure to know about the consequences before ejecting the CLI. The CLI version I've used for this article did not include the Uglyfy-Plugin which removes code webpack marks as unused. In addition to that, it sets the AotPlugin's flag skipCodeGeneration to true which prevents AOT. In order to enable these options, I've modified the generated webpack.config as follows: [...] "plugins": [ [...], new AotPlugin({ "mainPath": "src/main.ts", "hostReplacementPaths": { "environments\\environment.ts": "environments\\environment.ts" }, "exclude": [], "tsConfigPath": "tsconfig.json", // Set flag to false to allow AOT "skipCodeGeneration": false }), // Add UgilyJsPlugin new webpack.optimize.UglifyJsPlugin() ] [...] While AOT is not necessary for server side rendering, combining them makes perfect sense since both options positively impact the application's loading time. Necessary Packages The solution presented here uses Node with Express on the server side. Therefore I've downloaded the package express together with typings for it (@types/e[...]



Einführung in Node, Folge 9: Datenbanken ansprechen (NoSQL)

Mon, 06 Mar 2017 09:17:00 +0200

JavaScript lässt sich nicht nur im Browser und auf dem Webserver einsetzen. Auch Infrastrukturdienste wie Datenbanken, Message-Queues, Caches & Co. verstehen die Sprache zunehmend und beherrschen JSON als Datenformat. Die NoSQL-Datenbank MongoDB war eine der ersten dieser Art. Wie funktioniert der Zugriff auf MongoDB?



Using dependency injection in multiple .NET Core projects

Mon, 06 Mar 2017 00:00:00 Z

One of my last post was about Dependency Injection (DI) in .NET Core Console Applications. Some days after that post was published, I got a question about how to use the IServiceCollection in multiple projects. In this post I'm going to try to explain, how to use the IServiceCollection in a Solution with more projects. Setup To demonstrate that, I created a Solutions with two .NET Core Console apps and two .NET Standard libraries. One of the console apps uses two of the libraries and the other one is just using on. Each library provides some services which need to be registered to the DI container. Also the console apps provide some services to add. We now have four projects like this: DiDemo.SmallClient .NET Core Console app includes a WriteSimpleDataService references DiDemo.CsvFileConnector DiDemo.BigClient .NET Core Console app includes a WriteExtendedDataService includes a NormalizedDataService references DiDemo.SqlDatabaseConnector references DiDemo.CsvFileConnector DiDemo.SqlDatabaseConnector .NET Standard library includes a SqlDataService includes a SqlDataProvider used by the service DiDemo.CsvFileConnector .NET Standard library includes a CsvDataService BTW: Since one of the latest updates the "Class Libraries (.NET Standard)" project disappeared from the ".NET Core" node in the "Add New Project" dialogue and the "Class Library (.NET Core)" is back again. The "Class Libraries (.NET Standard)" is now in the ".NET Standard" node under the "Visual C#" node. In the most cases it doesn't really makes sense to create a .NET Core class library. The difference here is, that the Class Library (.NET Core) has some .NET Core related references. They targeting the netcoreapp1.x instead of the netstandard1.x. This means they have a lot of references, which are not needed in a class library in the most cases, e. g. the Libuv and the .NET Core runtime. The WriteExtendedDataService uses a INormalizedDataService to get the data and writes it to the console. The NormalizedDataService fetches the data from the CsvDataService and from the SqlDataService and normalize it, to make it usable in the WriteExtendedDataService. The WriteSimpleDataService uses only the ICsvDataService and writes the data out to the console. Setup the DI container Let's setup the DI container for the SmallClient app. Currently it looks like this: var services = new ServiceCollection(); services.AddTransient(); services.AddTransient(); var provider = services.BuildServiceProvider(); var writer = provider.GetService(); writer.write(); That doesn't really look wrong, but what happens if th[...]



ActiveRoute TagHelper

Fri, 03 Mar 2017 00:00:00 Z

I recently read the pretty cool blog post by Ben Cull about the IsActiveRoute TagHelper: http://benjii.me/2017/01/is-active-route-tag-helper-asp-net-mvc-core/. This TagHelper adds a css class to an element, if the specified route or route parts are in the current active route. This is pretty useful, if you want to highlight an active item in a menu. Inspired by this idea, I created a different TagHelper, which shows or hide contents, if the specified route or route parts are in the current route. This could be useful, e.g. if you don't want to have a link in an active menu item. From the perspective of an semantic web, it doesn't make sense to link to the current page. That means, the menu item that points to the current page should not be a link. The usage of this TagHelper will look like this: As you may see on the a-Tag, multiple TagHelper can work on a single Tag. In this case the built in AnchorTagHelper and the ActiveRouteTagHelper are manipulating the Tag. The a-Tag will be hidden if the specified route is active and the span-Tag is shown in that case. If you now navigate to the About page, the a-Tag is removed from the specific menu item and the span-Tag is shown. The HTML result of the menu now looks pretty clean: Using this approach for the menu, we don't need Ben Culls TagHelper here to add a special CSS class. The style for the active item can be set via the selection of [...]



HowTo: Get User Information & Group Memberships from Active Directory via C#

Thu, 02 Mar 2017 23:45:00 Z

I had to find a way to access all group memberships from a given Active Directory user. The problem here is, that groups may contain other groups and I needed a list of “all” applied group memberships - directly or indirectly.

The “fastest” solution (without querying each group) is to use the Token-Groups attribute, which already does this magic for us. This list should contain all applied groups.

The code would also allow to read any other AD property, e.g. the UPN or names etc.

Code

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("ListAllGroupsViaTokenGroups:");

        List result = new List();

        try
        {
            result = ListAllGroupsViaTokenGroups("USERNAME", "DOMAIN");

            foreach (var group in result)
            {
                Console.WriteLine(group);
            }
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
        }

        Console.Read();
    }

  
    private static List ListAllGroupsViaTokenGroups(string username, string domainName)
    {
        List result = new List();

        using (PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, domainName))
        using (var searcher = new DirectorySearcher(new DirectoryEntry("LDAP://" + domainContext.Name)))
        {
            searcher.Filter = String.Format("(&(objectClass=user)(sAMAccountName={0}))", username);
            SearchResult sr = searcher.FindOne();

            DirectoryEntry user = sr.GetDirectoryEntry();

            // access to other user properties, via user.Properties["..."]

            user.RefreshCache(new string[] { "tokenGroups" });

            for (int i = 0; i < user.Properties["tokenGroups"].Count; i++)
            {
                SecurityIdentifier sid = new SecurityIdentifier((byte[])user.Properties["tokenGroups"][i], 0);
                NTAccount nt = (NTAccount)sid.Translate(typeof(NTAccount));

                result.Add(nt.Translate(typeof(NTAccount)).ToString() + " (" + sid + ")");
            }
        }

        return result;
    }

}

Hope this will help someone in the future.

Code @ GitHub

(image)