我已经创建了一个全新的Asp.Net Core WebApi应用程序和一个.NET核心库,我打算在该应用程序中引用它。
我在应用程序中引用了库,但似乎应用程序无法解析该库中的任何内容。
web api app
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dnxcore50"
//"dotnet5.6",
//"portable-net45+win8"
],
"dependencies": {
"PoC.ServiceDiscovery": {
"version": "1.0.0-*",
"target": "project"
}
}
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"runtimes": {
"win10-x64" : {} ,
"ubuntu.16.04-x64": {}
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"Areas/**/Views",
"appsettings.json",
"web.config"
]
},
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
文库
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.Extensions.DependencyInjection": "1.0.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
},
"runtimes": {
"win10-x64": {},
"ubuntu.16.04-x64": {}
}
}
此致
答案 0 :(得分:1)
(1)从库的project.json中删除runtimes
。您的库正在定义一组它使用的API(.NET Standard 1.6 API)。所使用的API的实现由运行时选择,该运行时依赖于您的库。它可能适用于列出的它们,但它对.NET标准库没有任何意义。
(2)你的图书馆缺少一个名字。为其命名,以便您可以在WebAPI project.json
中引用它。为了清楚起见,我将假设它将被称为PoC.ServiceDiscovery
。
(3)将PoC.ServiceDiscovery
(假设这是您的图书馆名称)放入WebAPI的dependencies
文件中project.json
的正常列表中,紧挨着Microsoft.*
库
(4)您需要向WebAPI项目提供有关查找此库的位置的知识。这有两种主要方式。一种方法是使用包管理器(如NuGet或MyGet(需要更新NuGet.config
文件))共享库,或者我认为您希望在您的方案中执行本地项目引用。在这种情况下,在根目录中添加一个global.json
文件,其中包含包含库和WebAPI项目的相对路径数组,并使WebAPI项目中的依赖项成为项目引用。这意味着它看起来像这样:"PoC.ServiceDiscovery": { "target": "project" }
如果您想看一个示例,here is a very simple library我写了uses .NET Standard for the library,project reference用于图书馆的测试项目,global.json file允许dotnet
命令行工具,用于了解运行测试时查找库的位置。
答案 1 :(得分:0)
首先,不再分离ASP.NET WebApi,因为它现在是ASP.NET MVC的一部分
但支持主题 - .NET Standard只是更高级别的API摘要。支持.NET Core 1.0并不意味着运行跨平台(因为它也支持.NET Framework,通用Windows平台等)。所以你有两种方法可以在库中使用:
有关详细信息,请参阅阅读https://github.com/dotnet/standard/blob/master/docs/versions.md
答案 2 :(得分:0)
写
<ItemGroup>
<ProjectReference Include="..\YourProjectName\YourProjectName.csproj" />
</ItemGroup>
到目标.csproj项目。