在过去的几天中,我一直在尝试新的.NET CLI,尽管构建控制台和Web应用程序非常简单,但是如何构建类库却一点也不明显。
我执行了以下操作:与往常一样,在命令行上,我使用dotnet new
创建了project.json
文件。然后,我在该项目中编写了一个简单的类,仅此而已。
然后,我使用.NET CLI创建了一个控制台应用程序,其中包括第一个依赖于project.json
的应用程序,并使用我在类库中构建的类在屏幕上显示消息。
当我尝试运行控制台应用程序时,找到了另一个项目,.NET CLI尝试构建它。类库的生成失败,并显示以下消息:
在那种情况下,它将项目视为控制台应用程序,并试图找到一个主要的入口点。
我相信发生这种情况是因为当我使用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>
关于c# - .NET CLI的类库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36672586/