我目前正在开发一组逐步添加更多功能的库。
例如,在我的解决方案中,我有一个Foo
项目,用于定义一些基本功能集,另一个项目Foo.Web
用于特定于Web的实现,Foo.Web.Tokens
用于更具体的特征。 Foo.Web.Tokens
取决于Foo.Web
,这取决于Foo
。
我正在尝试构建单独的nuget项目,因此用户只需要引用他们需要的依赖项。我正在使用GitVersionTask对程序集进行版本控制,因此在构建之后,它们都会获得相同的版本号,并且在构建from a project时我正在使用替换令牌作为nuget,以便nuget包都具有相同的版本号。 / p>
我的问题是,当我尝试引用Foo.Web
或Foo.Web.Tokens
的预发布版本时,nuget无法解析对Foo
的依赖关系。例如,如果我为每个程序集发布了1.1.0.0-alhpa0001
包,当我尝试更新Foo.Web
时,nuget会显示以下错误:
Install-Package : Unable to resolve dependency 'Foo (≥ 1.1.0.0)'.
使用-Pre
参数不会改变这一点。 Foo.1.1.0-alpha0001.nupkg
确实存在,但我觉得nuget无法解析它,因为它不是一个稳定版本,我让nuget使用以下命令自动检测解决方案中的依赖关系:
.\.nuget\NuGet.exe pack source/Foo.Web/Foo.Web.csproj -Build -Version 1.1.0.0-alpha0001 -symbols -IncludeReferencedProjects
如何正确地允许Foo.Web
预发布包引用相同版本的Foo
预发布包?
答案 0 :(得分:0)
IncludeReferencedProjects
选项似乎从引用项目的assemblyinfo.cs中提取版本。
将AssemblyInformationalVersion
属性设置为所需的nuget包版本似乎可以按预期工作。
例如
[assembly: AssemblyInformationalVersion("1.1.0-alpha0001")]