首先,我将描述我们的设置(它是企业开发管道的极其简化的版本)。我们开发了一个.NET应用程序,它依赖于一些共享组件。共享组件通常与应用程序一起开发。我们希望将这些共享组件转换为NuGet包。
因此,我发布了包A的1.0.0.4版,并希望在我的应用程序中使用它。我的packages.config看起来像这样。
<package id="A" version="1.0.0.4"/>
到目前为止一切顺利。我可能会在此时将packages.config提交到版本控制以记住我的依赖项。现在我运行包A的下一个版本,它发布版本1.0.0.5。现在我希望我的应用程序自动在构建之前将软件包A更新到1.0.0.5。
但是,我的包配置现在包含一个精确版本1.0.0.4并且它是版本控制的。我的问题是:
我对NuGet很新,我来自ant + ivy / maven世界,这个功能是自动的,所以我仍然希望我在NuGet中遗漏一些明显的东西,尽管扫描stackoverflow上的讨论没有听起来太令人鼓舞了。
我找到了Using Nuget in development environment - best practices / how to和How to automatically update NuGet packages to latest available version以及NuGet issues with packages.config, project references and the solutionwide packages folder,但没有给出明确的答案。
答案 0 :(得分:1)
您可以使用allowedVersions
属性自动使用某个范围内的较新软件包版本,如下所示:
<packages>
<package id="SomePackage" version="2.1.0" allowedVersions="[2,3)" />
</packages>
在此示例中,将使用2.x系列中的任何包,但不会使用3.x系列中的任何包。您可以更具体地了解禁令,例如: `allowedVersions =“[2.1,2.4)”如果您想从2.1,2.2和2.3中获取任何包,而不是2.4。
答案 1 :(得分:0)
我认为您无法更改packages.config
以隐式允许更高版本。此外,项目文件引用了packages文件夹,其中包含路径中的软件包版本,因此需要在软件包更新后对其进行更改。
您可以通过运行packages.config
来执行nuget update
和项目文件的更新。
您可以在夜间构建中自动执行此操作,并检查生成的更改。然而,这是一个好主意是值得商榷的。至少,您应该通过运行构建来关闭更新操作,以确保新版本不会导致构建中断。