Angularjs: Erro: [ng: areq] O argumento 'HomeController' não é uma função, foi indefinido

Esta é minha demonstração usando angularjs, para criar um arquivo de serviço e adicionar serviço a um controlador.

Eu tenho dois problemas com minha demo:

Uma é quando eu coloco<script src="HomeController.js"> antes<script src="MyService.js"> Eu recebo esse erro,

Erro: [ng: areq] O argumento 'HomeController' não é uma função, foi indefinido

O outro é quando eu coloco<script src="MyService.js"> antes<script src="HomeController.js"> Estou tendo o erro a seguir,

Erro: [$ injector: despr] Provedor desconhecido: MyServiceProvider <- MyService

Minha fonte:

ArquivoIndex.html:

<!DOCTYPE html>
<html >
    <head lang="en">…</head>
    <body ng-app="myApp">
        …
        <div ng-controller="HomeController">
            <div ng-repeat="item in hello">{{item.id + item.name}}</div>
        </div>

        <script src="Scripts/angular.js"></script>
        <script src="Scripts/angular-route.js"></script>

        <!-- App libs -->
        <script src="app/app.js"></script>    
        <script src="app/services/MyService.js"></script>
        <script src="app/controllers/HomeController.js"></script>
    </body>
</html>

ArquivoHomeController.js:

(function(angular){
    'use strict';

    var myApp = angular.module('myApp',[]);

    myApp.controller('HomeController',function($scope,MyService){    
        $scope.hello=[];
        $scope.hello = MyService.getHello();
    });
})(window.angular);

ArquivoMyService.js:

(function(angular){
    'use strict';

    var myApp = angular.module('myApp',[]);

    myApp.service('MyService', function () {
        var hello =[  {id:1,name:'cuong'},
            {id:2,name:'nguyen'}];
        this.getHello = function(){
            return hello;
        };
    });

})(window.angular);

questionAnswers(24)

yourAnswerToTheQuestion