Search code examples
azure-iot-edgeazure-iot-sdk

how can I deploy legacy code ( build using .net framework 4.6) in iot edge device as module?


I have a code written in .net framework 4.6 which talks with a device (non iot, non IP) and reads data. I want this data to be sent to Azure IoT hub. so instead of using Azure IoT Device SDK in it, and running it as a simulated device, I want to create IoT Edge module, so lifecycle management of this app will come handy. But when I create new C# module in VS 2017, it forces me to use .net core 2.1. Is it possible to create Azure IoT Edge custom Module using .net Frameworks. and if yes, how ??


Solution

  • When you create a module in VS or VS Code, they assume you want a 'traditional' (and cross platform) module. So .NET Core is the only choice (for the cross platform part). However, if you only want to use IoT Edge as a deployment/lifecycle mgmt vehicle, than you can build your own docker image independent of IoT Edge, yet deploy it through the IoT edge manifest. This link talks about containerizing a traditional .NET app, which you should then be able to deploy with IoT Edge (it just won't 'talk' to ioT Edge). We've done similar (non-iot-edge module) kind of things with stuff like influxdb, grafana, redis cache, etc. We deploy and manage their lifecycle with IoT Edge, but they don't really talk to/through IoT Edge.

    Note that if you create a container as mentioned in the article, you will be limited to running IoT Edge on Windows with Windows containers.