C# Nuget钉扎版本

C# Nuget钉扎版本,c#,visual-studio-2013,nuget,C#,Visual Studio 2013,Nuget,我正在Visual Studio 2013中从事一个C#项目,在该项目中,我们开发了许多nuget软件包,可在多个不同的应用程序中使用。我们遇到了一些nuget.org包,其中我们希望“固定”到旧版本,并将旧版本包的表达式集中化 例如,我们与Unity 4或NUnit 3不兼容,因此我们希望继续使用这些软件包的早期版本 我不喜欢在packages.config中使用“allowedVersions”,因为 它不是集中式的(每个项目都必须输入) Visual Studio中的GUI可以在解决方案级

我正在Visual Studio 2013中从事一个C#项目,在该项目中,我们开发了许多nuget软件包,可在多个不同的应用程序中使用。我们遇到了一些nuget.org包,其中我们希望“固定”到旧版本,并将旧版本包的表达式集中化

例如,我们与Unity 4或NUnit 3不兼容,因此我们希望继续使用这些软件包的早期版本

我不喜欢在packages.config中使用“allowedVersions”,因为

  • 它不是集中式的(每个项目都必须输入)
  • Visual Studio中的GUI可以在解决方案级别更新包
  • 我在根级别的nuget包中使用了版本固定,该包有一个.nuspec,其中包含如下依赖项行

    <dependency id="Unity" version="(,4.0)" />
    <dependency id="NUnit" version="(,3.0)" />
    
    
    
    这似乎阻止了所有消费者升级到不受支持的版本。我喜欢这个,因为它很简单,我可以告诉我的队友确保每个包都包含根级别的nuget包

    我不喜欢的一件事是,这个根包的每个消费者都会得到一个他们不一定使用的包的引用

    例如,我发布的应用程序现在将引用NUnit,尽管根本没有使用它


    有没有一种方法可以在Nuget中表达版本固定,而不必获得这些不必要的依赖项?

    是否每个人都会在您的组织中使用它?如果是这样的话,也许您应该只拥有一个内部Nuget服务器,其中只包含适当的包。从配置的角度来看,allowedVersions是推荐的方法()。我(和其他人一起)成功地使用了@JonSkeet上面提到的技术(例如,只需一个网络共享,其中包含需要确定范围的包,不要让它扩展到其他包)。谢谢。是的,每个人都在组织内。我试图避免在我们自己的服务器上维护外部包的麻烦。此外,我喜欢团队能够访问外部存储库,以便能够自己探索包。