当存在具有两个不同版本的包时,nuget本地提要停止工作



我正在尝试使用nuget本地提要来发布我的包。因此,我尝试推出我的第一个组件/包。我的sdk项目中有以下nuget.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
<add key="Microsoft Visual Studio Offline Packages" value="C:Program Files (x86)Microsoft SDKsNuGetPackages" />
<add key="local feed" value="x:nugetpackages" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
<packageManagement>
<add key="format" value="0" />
<add key="disabled" value="False" />
</packageManagement>
</configuration>

SDK项目的配置如下:

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Title>My custom component</Title>
<Version>0.0.1-alpha</Version>
<PackageId>$(RootNamespace)</PackageId>
</PropertyGroup>

我将项目设置为Release配置,并执行Pack命令。因此,在bin/Release文件夹中创建了.nupkg文件。在软件包管理器控制台窗口中,我执行以下命令:

nuget add pathToNupkgFile -Source x:nugetpackages

到目前为止,包位于文件夹x:\nuget\packages\companyname.components.blazor.mycomponent\0.0.1-alpha.中

现在,我创建了一个新的解决方案,我想使用本地提要中的包。我将相同的nuget.config文件复制到创建新解决方案的文件夹中。我打开Manage Nuget Packages for Solution(简称MNPfS(,搜索新的软件包并安装它。在此之前一切都很好。

现在,如果我执行相同的过程并创建0.0.2-alpha-nupkg,在nuget-add命令之后,新版本出现在x:\nuget…中。。。。,但我无法在MNPfS屏幕上浏览本地订阅源。当我打开MNPfS时,我在应该列出包的窗口中收到以下消息:

发生错误

错误列表窗口显示以下消息:

错误[本地馈送]".",十六进制值0x00是无效字符。第1行,位置1。

现在,如果我从本地提要存储库中删除0.0.1-alpha版本,那么我可以在MNPfS中再次浏览,并显示新的包,并且可以安装。所以,只有当存在同一个包的两个版本时,问题才会出现。

任何人都知道为什么会发生这种情况,以及我如何在本地提要中拥有同一包的多个版本?

看起来问题与nuget-add命令-源参数有关。当源指向使用FUSE文件系统的分区时,它不会创建正确的nuspec文件,尽管PackageManager控制台中没有提供错误。

nuspec文件导致内容具有多个NULL值。若我将-Source指定到项目所在的当前分区,那个么nuspec文件就会正确创建,然后我就可以将内容复制到FUSE文件系统中,一切都正常

最新更新