在Windows服务上使用.NetCore类库

时间:2016-08-09 22:25:07

标签: c# asp.net-core

我想创建一个Windows服务,它重用我在.NETCore类库上创建的类。我有一个来自我的.NETCore类库的示例project.json,如下所示:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0"
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [ "dnxcore50", "portable-net451+win8" ]
    }
  }
}

我一直在遵循这种方法http://taskmatics.com/blog/run-dnx-applications-windows-service/。我创建了一个控制台应用程序,并按指示更改了其project.json文件。但是,每当我尝试将其他类库声明为依赖项时,我都会收到错误指示

  

'依赖无法解决'

这是我用于Windows服务应用程序的project.json文件:

 {
  "version": "1.0.0-*",

  "dependencies": {
    //"MyClassLibrary": "1.0.0-*",
    //When uncommenting everything fails
  },

  "frameworks": {
    "dnx451": {
      "dependencies": {
      },
      "frameworkAssemblies": {
        "System.ServiceProcess": "4.0.0.0"
      }
    }
  }
}

有没有办法可以将.NETCore类用于我的服务?

2 个答案:

答案 0 :(得分:0)

是的!那是因为NETStandard.Library 1.6.0不支持4.5.1,它只支持4.6.3+(.NET Framework)

您的类库需要降至.netstandard 1.2。更多详细信息,您可以在here

查看

答案 1 :(得分:0)

问题是类库中的netcoreapp1.0框架与控制台应用程序中的dnx451框架不兼容。使用net451替换这两者应该在此特定情况下

控制台应用

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "MyClassLibrary": "1.0.0-*"
  }

  "frameworks": {
    "net451": {
      "frameworkAssemblies": {
        "System.ServiceProcess": "4.0.0.0"
      }
    }
  }
}

您的班级图书馆

注意:如果不需要是NetStandard库,则可以删除netcoreapp1.0dependencies个节点。

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0"
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [ "dnxcore50", "portable-net451+win8" ]
    },
    "net451": { }
  }
}

您所关注的教程已经过时了。 dnx enter image description here已替换为新的.Net CLI。