繁体   English   中英

.NET CLI的类库

[英]Class Library with .NET CLI

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

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

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

当我尝试运行控制台应用程序时,找到了另一个项目,.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构建类库的正确方法呢? 运行时真的是问题吗? 如果是这样,我们如何处理?

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

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

至于依赖关系,您可以专门针对所需的依赖关系

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

或NETStandard.Library NuGet包

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

NETStandard.Library包尚未从NuGet中获得,因此您需要以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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM