.net dotnet pack似乎使用了过时的源代码,即使使用了干净的git克隆

fd3cxomn  于 2023-02-26  发布在  .NET
关注(0)|答案(1)|浏览(148)

首先:我知道这听起来难以置信,但我已经尝试了我想到的一切,所以请听我说完。
我正在制作一个. NET 6 C#库,在每个发布点,我都会在. csproj文件中增加版本号,然后运行dotnet cleandotnet build -c Releasedotnet pack -c Release命令。该库位于nugetgithub上。问题是,当安装构建的nuget包时,一切都在图书馆第一个出版版本的时候。
我试过:

  • 再次克隆git repo以获得干净的环境
  • 删除环境中除主C#项目(. csproj和所有. cs文件)之外的所有其他文件
  • 正在从. csproj文件中删除信息。
  • 在运行恢复、清理、生成和打包之前删除任何对象和/或生成文件夹
  • 在运行build-c Release之后运行带有--no-build的包
  • 向. csproj文件添加程序集版本

当我将版本号更改为nuget上还没有的新版本时,它可以工作。当我安装那个包时,它位于它应该在的位置。运行命令...

rmdir -r .\WeatherAPI-CSharp\bin;
rmdir -r .\WeatherAPI-CSharp\obj;
dotnet restore .\WeatherAPI-CSharp\WeatherAPI-CSharp.csproj;
dotnet clean .\WeatherAPI-CSharp\WeatherAPI-CSharp.csproj;
dotnet build -c Release .\WeatherAPI-CSharp\WeatherAPI-CSharp.csproj;
dotnet pack -c Release --no-build .\WeatherAPI-CSharp\WeatherAPI-CSharp.csproj

...生成一个过时的. nupkg当版本设置为0.4.1.当我然后改变版本为0.4.2和重新运行完全相同的命令,它的工作.我想这可能是因为版本已经存在于nuget上,所以我试图断开与互联网修复它,但没有任何效果.
在nupkg文件的dll中查看源代码显示了正确的源代码,但在安装该文件时,它似乎回退到了v0.1.0。我使用Nuget GUI在Visual Studio中安装nupkg,并将我的输出目录添加为nuget源,禁用在线nuget源。

nkoocmlb

nkoocmlb1#

这似乎是正在使用的包的缓存版本而不是新版本的问题。删除C:/Users/{UserName}/.nuget/{LibraryName}/中的所有文件夹修复了Visual Studio安装同一包的过时版本的问题。这也解释了为什么将版本号更改为nuget上尚未存在的版本号会导致文件成功构建,因为我已经缓存了所有版本。
真实的的问题似乎是dotnet在Release文件夹中使用了一个过时的版本来生成. nupkg。这可以通过运行命令dotnet cleandotnet build -c Releasedotnet pack -c Release --no-build来解决。
因为旧版本已经被缓存了,所以使用上面提到的命令重建包会扩大问题,因为它安装了缓存的版本而不是新构建的版本(我认为)。因此,我没有意识到过时的发布版本是问题所在。
到目前为止,这种解释似乎是准确的,但我保持这个问题开放,直到我能够证实这一点。

相关问题