Visual studio 调试并发布nuget包本地存储库

Visual studio 调试并发布nuget包本地存储库,visual-studio,nuget,Visual Studio,Nuget,我们正在为我们的VisualStudio项目试验nuget。然而,我们仅(或至少主要)将nuget用于我们自己的外部引用,并将它们存储在本地存储库(网络共享)中。我想知道的是如何处理整个调试/发布情况 具体(简化)情况: 我们有一个主要项目,它引用了我们自己开发的两个共享组件。这些共享组件也用于我们公司的其他产品 当我们构建主项目(azure管道)时,我们构建项目的调试版本和发布版本。但是,我们只能为每个外部引用指定一个nuget包 我们希望在调试构建期间使用共享组件的调试版本,在发布构建期间使

我们正在为我们的VisualStudio项目试验nuget。然而,我们仅(或至少主要)将nuget用于我们自己的外部引用,并将它们存储在本地存储库(网络共享)中。我想知道的是如何处理整个调试/发布情况

具体(简化)情况:

我们有一个主要项目,它引用了我们自己开发的两个共享组件。这些共享组件也用于我们公司的其他产品

当我们构建主项目(azure管道)时,我们构建项目的调试版本和发布版本。但是,我们只能为每个外部引用指定一个nuget包

我们希望在调试构建期间使用共享组件的调试版本,在发布构建期间使用发布版本。然而,这些(据我所知)实际上是不同的包

如何解决这个问题?例如,有没有一种方法可以在单个nuget包中同时包含发行版和调试版?对于不同的生成配置设置,是否可能必须使用不同的nuget配置


然而,我发现这个话题并没有真正解决我的问题。这个线程更多的是讨论是将调试版本还是发布版本发布到远程服务器。我们希望在一个私有存储库中发布和使用这两者。我们无意与世界其他地方共享我们的库。

一个NuGet包通常只包含特定目标框架的一组程序集。它并不是真正设计用来发布调试和发布版本的,因为您正在发布NuGet包以供其他用户使用。通常,您不会向最终用户发布应用程序的调试版本和单独的发布版本


您可以通过在NuGet包中使用具有自己的引用和配置信息的。可以将此.targets文件用作项目的扩展名。它将被导入,以便您可以根据项目中定义的配置根据需要定义引用。这不是很理想,但它应该会起作用。

这难道不意味着在我们的情况下,nuget可能不是一条出路吗?除了nuget之外,还有其他方法在我们的项目中包含这些共享组件吗?其他人是如何做到这一点的?我相信我们不是第一家出现这种情况的公司是的,NuGet可能不是一个好方法。大概你的网络共享仍然适用于调试和发布版本,所以可能没有必要更改它。我真的不明白为什么没有更多的人有同样的问题。我已经描述了一种我认为对很多公司来说都很常见的情况。其他公司如何设置其构建服务器以使用外部库进行构建?使用nuget的优点是,它在tfs2015构建任务构建中是开箱即用的,并且它确保引用的版本在手动更新之前保持不变。如果我们离开nuget,我们将失去这一优势。nuget不是设计用来同时发布调试和发布版本的。它适用于一个已发布的工件,该工件通常是您的发布版本,然后供其他人使用。对于不在NuGet上的外部库,我倾向于使用一组二进制文件,通常是发布版本,并且没有两组二进制文件。然而,在文件共享或版本控制中,并没有任何东西同时存在。你可以为你的二进制文件使用一个子模块,比如说在GitHub上。是的,因为我们需要调试/发布配置,所以我们需要实现一个定制的构建任务。显然,nuget在这里还不够,所以我们将开始处理定制构建任务,以实现我们希望的方式。我仍然认为没有其他默认方法来实现这一点是非常奇怪的