特别是在Ubuntu上,这似乎不起作用。如何在.NET核心应用程序中使用.NET核心类库?
例如,如果我这样做:
dotnet new sln -n HelloWorld
dotnet new classlib -n HelloLib
dotnet new console -n HelloApp
dotnet sln add ./HelloApp/HelloApp.csproj
dotnet sln add ./HelloLib/HelloLib.csproj
dotnet restore
dotnet build
cd HelloApp/
dotnet add reference ../HelloLib/HelloLib.csproj
并修改Program.cs的是:
using System;
using HelloLib;
namespace HelloApp
{
class Program
{
static void Main(string[] args)
{
var x = new Class1();
Console.WriteLine("Hello World!");
}
}
}
则应用程序将编译,产生这些文物:
HelloApp/bin$ du -a
4 ./Debug/netcoreapp1.1/HelloApp.deps.json
4 ./Debug/netcoreapp1.1/HelloApp.runtimeconfig.json
4 ./Debug/netcoreapp1.1/HelloApp.pdb
4 ./Debug/netcoreapp1.1/HelloLib.pdb
8 ./Debug/netcoreapp1.1/HelloApp.dll
4 ./Debug/netcoreapp1.1/HelloApp.runtimeconfig.dev.json
4 ./Debug/netcoreapp1.1/HelloLib.dll
36 ./Debug/netcoreapp1.1
40 ./Debug
44 .
...但执行应用程序失败:
$ dotnet HelloApp.dll
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'HelloLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Aborted (core dumped)
如果我删除using HelloLib
线,它的工作原理:
$ dotnet HelloApp.dll
Hello World!
是什么回事?
我相信它得到的东西做在项目文件中的混乱不兼容:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.4</TargetFramework> <-- **THIS**
</PropertyGroup>
</Project>
VS:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework> <-- **And THIS**
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\HelloLib\HelloLib.csproj">
<Project>{1607a379-5bae-423b-8efc-796a06556be0}</Project>
<Name>HelloLib</Name>
</ProjectReference>
</ItemGroup>
</Project>
我以为这只是一个错误。
...但其他人似乎使用.NET核心没有太多的麻烦。
那么,我做错了什么?
还是人们使用.NET核心只是不使用类库,因为他们不工作?
(编辑:版本:
Microsoft .NET Core Shared Framework Host
Version : 1.1.0
Build : 928f77c4bc3f49d892459992fb6e1d5542cb5e86
$ dpkg -l |grep dotnet
ii dotnet-dev-1.0.3 1.0.3-1 amd64 .NET Core SDK 1.0.3
$ cat /etc/issue
Ubuntu 16.10 \n \l
您的dll是否存在于您的工作项目目录中? –