asp.net-core - Nuget 打包不包括正确方式的依赖项
问题描述
我有一个 C# 库,假设使用 Log4net 作为依赖项的“实用程序”,我使用的是 .net 框架 4.6.1,我完成了这个库的开发并做了一个 nuget 包 Utilities.projcs 然后推送这个包。
当我尝试在另一个项目中使用这个实用程序时,它是一个 asp.net 核心“2.1”项目,我得到了这个异常
**Method not found: 'log4net.ILog log4net.LogManager.GetLogger(System.String)'.**
System.MissingMethodException
HResult=0x80131513
Message=Method not found: 'log4net.ILog log4net.LogManager.GetLogger(System.String)'.
Source=Utilities
StackTrace:
at Utilities.Logging.MyLogManager.GetLogger(String loggerKey)
我的实用程序 nuget 规范文件
<?xml version="1.0"?>
<package >
<metadata>
<id>Utilities</id>
<version>1.2.0</version>
<title>Internal Utilities</title>
<authors>My Team</authors>
<owners>My Team</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>This dll contains parsers,loggers and other functionalities that is commonly used.</description>
<releaseNotes>Rlease notes</releaseNotes>
<copyright>Copyright 2020</copyright>
<tags>Utilities</tags>
<dependencies>
<dependency id="log4net" version="2.0.8" include="all"/>
</dependencies>
</metadata>
<files>
<file src="bin\Debug\log4net.dll" target="" />
<file src="bin\Debug\log4net.xml" target="" />
<file src="bin\Debug\Utilities.dll" target="" />
</files>
</package>
任何解决这个问题的想法,我花了最后几天来解决它,但没有运气
注意:当我在我的电脑(我的库 + Log4net)中手动添加参考时,它工作正常!!
解决方案
在 .net 标准中创建类库。
有关 .net 标准的更多信息,请访问https://docs.microsoft.com/en-us/dotnet/standard/net-standard
如何创建 .net 标准类库 -> https://docs.microsoft.com/en -us/dotnet/core/tutorials/library-with-visual-studio?tabs=csharp
如何创建 .net 标准 Nuget -> https://docs.microsoft.com/en-us/nuget/quickstart/create-and -publish-a-package-using-visual-studio?tabs=netcore-cli
此图像将帮助您了解共享库背后的概念。
推荐阅读
- sql - SQL - 在另一个表中递归查找计数
- angular6 - 如何在angular6中延迟使用httpservice
- c - 如何使这个for循环既使LED变暗又使LED变亮?
- r - 如何绘制空间对象的方角?
- java - Spring Boot Profile 作为 Docker ARGS 用于动态运行参数
- java - 在 11.0.3 之前是否有针对 Java11 TLS1.3 支持的组握手问题的解决方法
- php - text-transform: 大写 don,t work for
- spring-mvc - 多个JSP表单中的Spring模型属性没有会话
- apache-kafka - 融合复制器问题
- java - Guice MapBinder:如何绑定地图
在Guice 中使用providesIntoSet?