我的 C#解决方案名为commons
,其中包含我的模型以及其他解决方案将使用的常见内容。
作为帖子构建活动我创建了一个 nuget 包并将其复制到我的本地 Nuget folder ("C:\packages")
发布后事件:
"$(ProjectDir)nuget.exe" pack "$(ProjectDir)Commons.csproj" -
IncludeReferencedProjects
xcopy Commons.1.0.0.nupkg c:\packages /Y
注意:版本永远不会更改。
成功创建了我的新nuget包。
然后在另一个解决方案中我引用该包,我可以看到一切正常。 我可以访问我的所有模型和所有内容。
我遇到的问题是
如果我对我的Common项目进行任何更改(例如在我的模型中添加一个新字段),这将不会出现在我的解决方案中。
我错过了什么?
答案 0 :(得分:0)
确保该文件夹具有以下结构
packageName/version/[packageName].[version].nupkg
v1: abc.common/1.0.0/abc.common.1.0.0.nupkg
v2: abc.common/2.0.0/abc.common.2.0.0.nupkg
确保较新的软件包具有更高版本,不仅仅是文件夹结构,还有nuspec文件。您可以将.nupkg重命名为zip文件,并访问nuspec文件。或者使用package explorer https://github.com/NuGetPackageExplorer/NuGetPackageExplorer
如果发布了新版本,VS将自动显示升级按钮。
答案 1 :(得分:0)
如果我对我的Common项目进行任何更改(例如在我的模型中添加一个新字段),这将不会出现在我的解决方案中。
长篇故事。
要解决此问题,您应该在更改{{}后确保两点,重新打包并重新安装重新打包到解决方案 1}}项目。
<强> 1。重新打包:
对Commons
项目进行一些更改后,您应该重新打包nuget包。对于您的情况,您应该重建Commons
项目以生成新的nuget包。
此外,您是否需要更改版本号取决于您自己的要求,我们建议您在发布新的nuget包之前更改版本号。
要完成此操作,请在发布新版本nuget包之前修改Commons
文件中的AssemblyVersion
。例如,
AssemblyInfo.cs
构建之后,您将获得[assembly: AssemblyVersion("1.0.0.1")]
文件夹中的nuget包Commons.1.0.0.1.nupkg
,您可以在复制命令中使用通配符bin
将包复制到*
:< / p>
c:\packages
如果您不想更改版本,则无需执行更多操作。
<强> 2。重新安装重新打包到解决方案:
重新打包nuget包后,您需要将旧的nuget包替换为包源中的新nuget包。
需要指出命令xcopy.exe /y "$(ProjectDir)$(OutDir)Commons.*.nupkg" "c:\packages"
将不重新安装新版本包。
因为当你使用这个命令重新安装nuget包时,nuget将检查packages文件夹是否存在包Update-Package Commons -reinstall
,如果它存在, nuget将不会恢复nuget包,所以nuget将不要在包源中重新下载新版本包。所以Nuget仍然重新安装旧包。这就是你遇到问题的原因。
要解决此问题,您需要删除软件包文件夹中的软件包,然后执行重新安装命令以重新安装软件包。或者您可以先卸载软件包,然后重新安装。
还有一件事,如果你再使用不同版本的软件包,可以直接使用update package来安装新版本的软件包,不需要先注意删除软件包/卸载。
希望这很清楚。
答案 2 :(得分:0)
所以...在尝试了1000件事之后,我能够弄明白。
正确的命令是:
nuget pack Commons.csproj -BasePath .\ -IncludeReferencedProjects
所以缺少基本路径基本上都是
其他人的发布后活动
"$(ProjectDir)nuget.exe" pack "$(ProjectDir)Commons.csproj" -BasePath "$(ProjectDir)-IncludeReferencedProjects