我正在尝试从一个用于库的Framework4.8 .csproj文件构建一个.csproj包。这个项目汇编得很好。我有一些单元测试运行良好。我运行"nuget“命令并获得标题中的错误。
我在.NET标准2.0项目中定义了一个接口。我需要为核心和框架项目实现这个接口。实现中存在特定于平台的依赖关系。核心包很容易生成,因为我在项目文件中有一个具有True值的GeneratePackageOnBuild元素。
框架包将使用命令行构建。Nuget v6.0.0.280,MSBuild v17.1.0.7609
& nuget pack -includeReferencedProjects -Symbols -SymbolPackageFormat snupkg -Properties Configuration=Release
我已经从框架项目中删除了System.Memory包。System.Memory不在具有接口的项目中。在阅读了另一个与System.Memory有问题的人之后,我删除了System.Memory包。我在Standard2.0项目或Framework4.8项目中都没有发现对System.Memory的明确引用。我删除了bin和obj文件,清理了解决方案,重新启动了编译器,并启动了机器。
什么是试图引用System.Memory 4.0.1.1,以及如何使其停止?
发布于 2022-03-17 18:02:15
nuget命令中的-includeReferencedProjects标志没有执行预期的操作。在依赖树的某个地方,有需要System.Memory 4.0.1.1的东西。与其跟踪依赖关系,不如在没有-includeReferencedPackages的情况下运行包。
这意味着所需的引用项目(接口声明)现在不会包含在NuGet包中,所以要么在.csproj中设置一个包含引用的.nuspec文件的目标。我走了.nuspec路线。
我跑了
nuget spec
以获取nugt试图使用的文件。
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>...</authors>
<owners>...</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>...</description>
<releaseNotes>...</releaseNotes>
<copyright>$copyright$</copyright>
</metadata>
</package>
然后在元数据元素下的package元素中添加一个元素,将我想要的依赖项收集到交付的库中:
<files>
<file src="bin\Release\InterfaceFile.*" target="lib\net48" />
</files>
现在nuget包不会被依赖关系绊倒,但是我想要的依赖项是打包的。我可以把它放在我的NuGet源代码中,我的应用程序可以使用它,并在一个框架应用程序中使用接口和实现。
https://stackoverflow.com/questions/71506145
复制相似问题