Nu-获取和解决多个解决方案引用的项目的项目级依赖我想弄清楚如何处理这种情况什么是最好的方法。假设我有一个被多个不同的不相关解决方案引用的库,我们称它为WebServiceInterface.dll。这个库依赖于JSON.NET。在NuGet之前,JSON.NET二进制文件是通过WebServiceInterface项目中的外部SVN引用的。依赖于WebServiceInterface的其他解决方案引用项目(也作为SVN外部),从而拉动项目及其依赖项。对于NuGet,我还没有想出如何强制将JSON.NET引用存储在WebServiceInterface项目下(而不是RandomSolution包位置)。我找到了对项目级和解决方案级包的@nu-get的引用,但是当我通过nu-get添加依赖项时,我似乎无法找到如何指定它。这里的目标是当有人签出WebServiceInterface并将其添加到它构建的新解决方案中时(而不是在JSON.NET中指向最后签入的解决方案下的包目录的损坏引用)。包始终存储在解决方案级别,因此如果您将包安装到多个项目中,它们来自同一个地方。我不相信你可以配置这个让每个项目都有自己的包文件夹。我不确定有什么办法可以做你正在尝试的事情。你可以在你的项目中有一个构建步骤来获取包,但我不知道这对你有多好。我建议在NuGet问题跟踪器中发帖进行讨论。处理它的人似乎非常活跃,因此他们可能会在未来的版本中添加支持:-)当我去查明ChrisB是否为此创建了NuGet问题时,我找不到。编辑:他做到了,请参阅下面的评论。但我确实找到了NuGet的一个半文档化功能,我用它来解决这个问题:允许指定安装包的文件夹让我把这个问题分成两个问题:让NuGet允许多个解决方案在以下情况下使用相同的包位置当您包含带有NuGet包的项目时,让NuGet包自动从源代码管理中获取问题1:默认情况下,NuGet将包存储在解决方案文件夹的packages文件夹中。要更改该位置,请在您的解决方案的根文件夹中创建一个nuget.config文件,其中包含以下内容:...与您的解决方案相关的UtilitiesLibrarynuget.packages;显然无论你想做什么。使每个解决方案都具有相同包文件夹的相对路径。至于NuGet的流程,从那时起repositories.config中的路径是相对于包含repositories.config的文件夹,而不是解决方案,所以现在所有项目/包的管理都与解决方案位置无关。这允许多个解决方案在源代码管理中使用相同的包,并且如果这些解决方案使用相同的项目(使用NuGet包),那么无论哪个解决方案更新包,这些解决方案/项目都将保持同步。问题1彻底解决。问题2:让我从两个角度来探讨这个问题。这适用于VisualStudio和TFS-我将把SVN留给其他人来解决。第一:如果您没有驱动器上的源代码并获得解决方案(而不是项目),我宁愿制作它以便您获得解决方案构建所需的一切。手动提取不应该有任何遗漏的引文。我们可以通过将包文件添加为解决方案项来完成此操作。是的,在每个解决方案中。是的,需要做一些工作,但是一旦完成,包文件将自动从源代码管理中获取/更新。第二:在新的解决方案中,当您包含具有NuGet包的现有源代码管理项目时,您必须手动从源代码管理中获取包并将它们添加为解决方案项。至少在未来,任何获得解决方案的人都将自动拥有成功构建所需的一切。至少对于VS/TFS,就是这样,AFAIK。如果projB依赖于projA,并且你将projB添加到新的解决方案中,VS/TFS将不会自动从TFS中获取projA。你必须手动完成。dll引用(如NuGet包)也是如此。我的解决方案摘要:*一旦一个解决方案将包更新为新路径或文件名,它们将显示为缺少对其他解决方案的引用,您将不得不手动清理它。但至少你知道包在源代码管理中的位置”(与RandomSolution包位置相反)。》以上就是C#学习教程:Nu-获取和解析多个解决方案引用的项目的项目级依赖的全部内容,本文收集自网络,不代表立场,如涉及侵权,敬请谅解点击右侧联系管理员删除,如需转载请注明出处:
