Nuget程序包创建-针对.NET Framework 4.6.1的类库无法针对正确的框架 - c#

我创建了一个针对.net Framework 4.6.1的类库(几乎是一块空白画布,只有一种方法可以返回字符串,仅用于测试目的)。我想把它做成一个nuget包。我正在关注本文https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-visual-studio-net-framework,但是当我进入“ nuget pack”时,会收到以下警告:

"WARNING: NU5128: Some target frameworks declared in the dependencies group of the nuspec and the lib/ref folder do not have exact matches in the other location. Consult the list of actions below:
- Add a dependency group for .NETFramework4.6.1 to the nuspec"

我尝试将依赖项组添加到.nuspec文件:

<?xml version="1.0"?> 
<package>
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>Author</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>H</description>
    <copyright>Copyright 2019</copyright>
    <tags>blah</tags>
    <dependencies>
      <group targetFramework=".NETFramework4.6.1" />
    </dependencies>   
  </metadata> 
</package>

我也尝试过:

<?xml version="1.0"?> 
<package>
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>Author</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>H</description>
    <copyright>Copyright 2019</copyright>
    <tags>blah</tags>
    <dependencies>
      <group targetFramework="net461" />
    </dependencies>   
  </metadata> 
</package>

我仍然遇到相同的错误。

我尝试使用较旧的nuget版本,但未显示警告消息,但仍然存在相同的问题(如果我尝试通过程序包管理器进行添加,则表示它没有依赖性)。

参考方案

警告:NU5128:在依赖项中声明了一些目标框架
nuspec组和lib / ref文件夹不完全匹配
在另一个位置。请参阅下面的操作列表。

这是Github/Nuget中的未解决问题,请参见#8713。我可以在带有Nuget V5.3的VS2017中重现相同的问题,如果我使用Nuget V5.2或更早版本,则此问题将消失。对于这种情况,恐怕您必须使用Nuget.exe的早期版本,直到团队发布此修复程序为止。

如果我尝试通过软件包管理器添加,它说它没有
依存关系

1.尽管您的软件包项目依赖于某些nuget软件包,但如果它显示no package dependencies,请检查您是否在当前项目中使用packageReference管理nuget。目前,nuget pack命令不适用于.net framework projects with packageReference或new SDK format projects。

您可以从Leo's answer检查详细信息以解决此问题。

2.如果no dependencies的意思是当一个项目使用了程序包时,它不会显示项目目标的框架,如下所示:

Nuget程序包创建-针对.NET Framework 4.6.1的类库无法针对正确的框架 - c#(我们可以看到您的软件包取决于Newtonsoft.Json,但找不到针对的框架(net461)。)

为此,我们需要使用nuget pack xx.nuspec之类的命令在打包时将dependencies+group添加到软件包中。然后我们可以看到目标框架和依赖包,如下所示:

Nuget程序包创建-针对.NET Framework 4.6.1的类库无法针对正确的框架 - c#

希望以上所有对您有所帮助,如果我误解了任何内容,请随时纠正我:)

Visual Studio,ASP.Net(.Net Framework),并在项目中包含NuGet安装的软件包 - javascript

我在Visual Studio 2017中有一个主要由JavaScript组成的ASP.Net(.Net Framework)MVC Web应用程序。我已经使用NuGet安装了一个软件包(特别是marker-animate-unobtrusive软件包。)文档继续说我应该在我的HTML页面中包含JavaScript,但是在仔细检查了NuGet的内容后,我不确…

如何在命令行上更改连接字符串以在迁移到Entity Framework Core中的新数据库时更新数据库 - c#

首先在ASP.NET Core和EF Core代码中,我有一个多租户的webapp。创建新租户时,我想更改连接字符串,在其上添加迁移,然后更新。从命令行,添加迁移无法在租户上获得动态的连接字符串,因此在应用程序首次以新租户开始时,我没有有效的连接字符串来创建新数据库。有什么解决办法吗?谢谢 参考方案 您在找这个吗?编辑:这是为EF 6.1Update-Dat…

将列表<>写入数据库asp.net - c#

我被困写数据库不要把我丢错写命令不起作用控制器:[HttpPost] public async Task<ActionResult>PartialTabelaEcp(string userDate) { var numerMiesiaca = 1; var numerRoku = 1; var dbExists = _ecpContext.Kar…

模块化C#Compact Framework 2.0应用程序 - c#

我们目前正在开发新的手持软件。我无法讨论应用程序的性质,因此我将使用一个示例。我们正在设计用于管理学校的手持软件。我们希望对系统的各个方面进行模块化,以便不同的学校可以使用不同的功能。我们的系统将从主菜单和登录屏幕开始。我希望这可以作为系统的基础,并成为要添加模块的位置。即我将有一个名为SchoolPda的项目。然后,我想拥有不同的模块。即,我想要一个注册模…

ASP.NET Core-在Singleton注入上存储库依赖项注入失败 - c#

我正在使用SoapCore为我的ASP.NET Core MVC应用程序创建Web服务。我正在使用Entity Framework Core和简单的存储库模式来获取我的数据库数据。我通过Startup.cs中的.AddSingleton()注入存储库类:services.AddSingleton<IImportRepository, ImportRep…