首页 > 解决方案 > 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)中手动添加参考时,它工作正常!!

标签: asp.net-corenugetnuget-package.net-4.6.1nuget-spec

解决方案


在 .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

.net 基础设施
此图像将帮助您了解共享库背后的概念。


推荐阅读