使用.NET CLI的类库

时间:2016-04-17 04:11:24

标签: c# .net .net-core

在过去的几天里,我一直在尝试使用新的.NET CLI,尽管构建控制台和Web应用程序非常简单,但如何构建类库并不是很明显。

我做了以下操作:像往常一样,在命令行上我使用dotnet new创建了一个project.json文件。然后我在这个项目中编写了一个简单的类,仅此而已。

然后我使用.NET CLI创建了一个控制台应用程序,其中包含第一个作为project.json依赖项的应用程序,并使用我在类库上构建的类来在屏幕上显示消息。 / p>

当我尝试运行控制台应用程序时,找到了另一个项目,.NET CLI尝试构建它。类库的构建失败,并显示消息:

  

程序不包含静态' Main'适合入境点的方法。

在这种情况下,它将项目视为控制台应用程序并尝试查找主要入口点。

我相信这是因为当我使用dotnet new命令创建类库时,它生成了project.json,如下所示:

{
    "version": "1.0.0-*",
    "compilationOptions": {
    "emitEntryPoint": true
},
    "dependencies": {
        "Microsoft.NETCore.App": {
            "type": "platform",
            "version": "1.0.0-*"
        }
    },
    "frameworks": {
        "netcoreapp1.0": {}
    }    
}

在那里,我相信可能有两个原因:其中一个原因是运行时为Microsoft.NETCore.App,第二个为TFM。

我尝试将TFM更改为netstandard1.5,但它没有工作,给出了同样的错误。在那种情况下,我认为问题在于运行时。不知怎的,我相信取决于Microsoft.NETCore.App意味着我们正在构建一个控制台应用而不是一个库,然后需要一个入口点。

如何使用.NET Core CLI构建类库的正确方法呢?真的是运行时问题吗?如果是这样,我们该如何处理呢?

1 个答案:

答案 0 :(得分:2)

此处的两个问题是"emitEntryPoint": true和您的dependencies部分。

类库没有入口点(static void Main()方法),因此emitEntryPoint应设置为false。

对于依赖项,您可以专门定位所需的依赖项

"dependencies" : {
   "System.Console": "4.0.0-*"
}

或NETStandard.Library NuGet包

"dependencies" : {
   "NETStandard.Library": "1.5.0-*"
}

NuGet尚未提供NETStandard.Library软件包,因此您需要将MyGet作为目标,直到它正式发布。将以下内容放入项目文件夹

中的NuGet.config文件中
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="AspNetCI" value="https://www.myget.org/F/aspnetcirelease/api/v3/index.json" />
    <add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>