如何在多个 C# 项目中强制执行相同的 nuget 包版本?

2024-01-05

我有一堆小型 C# 项目,它们使用几个 NuGet 包。我希望能够自动更新给定包的版本。更重要的是:如果一个项目使用与其他项目不同的版本,我希望收到警告。

如何在多个 C# 项目之间强制执行相同的版本依赖关系?


我相信我已经找到了解决这个(以及许多其他)问题的设置。

我刚刚意识到可以使用文件夹作为 nuget 源。这是我所做的:

root
  + localnuget
      + Newtonsoft.Json.6.0.1.nupkg
  + nuget.config
  + packages
      + Newtonsoft.Json.6.0.1
  + src
      + project1

nuget.config 如下所示:

<configuration>
  <config>
    <add key="repositoryPath" value="packages" />
  </config>
  <packageSources>
    <add key="local source" value="localnuget">
  </packageSources>
</configuration>

您可以将 Nuget 服务器添加到 nuget.config 以在开发期间访问更新或新依赖项:

<add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 

完成后,您可以复制 .nupkg从缓存中 http://www.hanselman.com/blog/HowToAccessNuGetWhenNuGetorgIsDownOrYoureOnAPlane.aspx to localnuget文件夹以将其签入。

我喜欢这个设置的三点:

  1. 我现在可以使用 Nuget 功能,例如添加道具和目标。如果您有代码生成器(例如 protobuf 或 thrift),这将变得无价。

  2. 它(部分)解决了Visual Studio不复制的问题all DLLs http://www.google.com/search?q=visual%20studio%20not%20copying%20referenced%20dll,因为您需要在中指定依赖项.nuspecfile 和 nuget 自动加载间接依赖项。

  3. 我曾经为所有项目使用一个解决方案文件,因此更新 nuget 包更容易。我还没有尝试过,但我想我也解决了这个问题。我可以为我想要从给定解决方案导出的项目提供 nuget 包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在多个 C# 项目中强制执行相同的 nuget 包版本? 的相关文章

随机推荐