导入简单的自定义 NuGet 包时出错:包不支持任何目标框架

Posted

技术标签:

【中文标题】导入简单的自定义 NuGet 包时出错:包不支持任何目标框架【英文标题】:Importing simple custom NuGet package with error: Package does not support any target frameworks 【发布时间】:2018-12-19 01:18:32 【问题描述】:

我创建了一个面向 4.6.1 .NET Framework 的 .NET Framework 类库。该项目包含一个 .cs 类,并且没有对任何库、DLL 或 NuGet 包的外部引用。这是 nuspec:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <!-- Required elements-->
        <id>MyEventLogger.Core</id>
        <version>1.0.0</version>
        <description>Logs event log</description>
        <authors>Me</authors>
    </metadata>
    <files>
      <file src="MyEventLogger.Core\**\bin\Debug\*.dll" target="lib\net" />
      <file src="MyEventLogger.Core\**\bin\Debug\*.dll" target="lib\netstandard" />
    </files>
</package>

我无法从运行 .NET Framework 4.7.1 的 ASP.NET Core 应用程序导入它。

我得到的错误是包不支持任何框架:

我正在使用 Azure Devops 构建管道来启动包并推送到本地源。我应该如何正确引用它,以便新版本的 .NET Framework 上的应用程序仍然可以使用旧版本上的这个库?

感谢您的帮助!我找不到如何在任何地方修复此错误或针对多个 .NET 框架的良好示例。

【问题讨论】:

MyEventLogger.Core 是什么样的?它是什么类型的项目? 更新了更多细节的问题。它是一个 .NET Framework 类库。 有什么阻止你把你的类库转换成网络标准库吗? 正如@cal5barton 所说,.NET Standard 2.0 可能是您正在寻找的:docs.microsoft.com/en-us/dotnet/standard/net-standard 我将库更改为 .NET Standard 2.0 库并收到相同的错误。我还尝试将我的文件节点设置为: 【参考方案1】:

当我能够使用以下文件节点时,它就开始工作了:

<files>
   <file src="**\MyEventLogger.Core.dll" target="lib\net461\MyEventLogger.Core.dll" />
</files>

帮助我解决这个问题的是在我的机器上安装 NuGet 以及安装 NuGetPackageExplorer。您可以使用 NuGetPackageExplorer 创建包,然后导出 .nuspec 文件。我将该 .nuspec 文件复制到我的存储库中,然后将我的 Azure DevOps 构建管道指向 .nuspec 文件。当我将包导入另一个项目时,此错误消失。

【讨论】:

【参考方案2】:

为了让您能够跨 .net 框架和 .net 核心使用代码,您需要在以 .net 标准编写的库中编写代码。你可能会找到类似的解决方案here

谢谢

【讨论】:

我认为这不是解决方案。我可以进行项目引用,但是当我尝试将库作为 NuGet 包共享时出现问题。我似乎无法弄清楚如何将 .nuspec 文件构建到可以将 DLL 导入我的其他项目的位置。

以上是关于导入简单的自定义 NuGet 包时出错:包不支持任何目标框架的主要内容,如果未能解决你的问题,请参考以下文章

IDEA使用Maven工具打包带有外部jar包时出错 - 提示程序包不存在和找不到符号

ADAL .Net Core nuget 包不支持 UserPasswordCredential

Team City 自定义 NuGet 包还原未发生

为 uwp 创建包时出错

导入 hive 包时出错

变压器:导入包时出错。 “ImportError:无法从 'torch.optim.lr_scheduler' 导入名称 'SAVE_STATE_WARNING'”