Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Nuget不从源代码管理还原包_Visual Studio_Nuget_Nuget Package Restore - Fatal编程技术网

Visual studio Nuget不从源代码管理还原包

Visual studio Nuget不从源代码管理还原包,visual-studio,nuget,nuget-package-restore,Visual Studio,Nuget,Nuget Package Restore,我们正在迁移所有项目以使用nuget引用。 与源代码控制(在我们的例子中是DevOps和Git)一起,我注意到nuget包管理器有一种奇怪的行为 当我们签入带有nuget引用的项目时,其他同事(签出此项目的同事)会在项目中收到引用错误。 我分析了它并注意到,在分支的工作版本中,nugetpackages的DLL不包括在内。package.config在我看来很好 我的问题是:我们需要签入来自DLL的包吗 到源代码管理了吗?据我所知,nuget应该检查 软件包/程序集已下载,如果未下载,应重新下载

我们正在迁移所有项目以使用nuget引用。 与源代码控制(在我们的例子中是DevOps和Git)一起,我注意到nuget包管理器有一种奇怪的行为

当我们签入带有nuget引用的项目时,其他同事(签出此项目的同事)会在项目中收到引用错误。 我分析了它并注意到,在分支的工作版本中,nugetpackages的DLL不包括在内。package.config在我看来很好

我的问题是:我们需要签入来自DLL的包吗 到源代码管理了吗?据我所知,nuget应该检查 软件包/程序集已下载,如果未下载,应重新下载 他们

在visualstudio中的nuget package manager->“允许nuget下载缺少的包”和“在Visual Studio中生成期间自动检查缺少的包”下,这两个选项都已选中(在所有客户端上)

我还只使用packages.config签入了一个项目,而不使用packages文件夹。
但是引用没有像以前那样重新计算/在项目的加载/构建过程中没有自动恢复。

不,您不需要在源代码管理中包含包的DLL。packages.config是您所需要的全部,因为它包含足够的信息来获取运行代码所需的所有库

在Devops中,您需要向构建中添加一个。这将拉下所有需要的DLL

使用像nuget(或npm等)这样的包管理器,您可以只保留源代码控制中的代码。它还可以防止出现“它在我的机器上工作”的情况,即Developer1有一个特定的本地引用dll,而Developer2没有


如果个别开发人员出现引用错误,可能是有人签入了对本地文件的引用,而不是nuget包。

我解决了从packages.config切换到packagesreferences的错误。在build/rebuild事件中,现在将从nuget源中提取所有DLL(如果它们不存在)


查看此博客文章以供参考

Hi Twiebie,您是否使用Devops之类的工具,此问题似乎不仅仅与本地VS有关。也许你可以添加一些标签让它更清晰。Hei@LanceLi MSFT-是的,我们使用DevOps和Git。但我认为问题是针对nuget的。当用户从repo签出时,nuget不会下载包的二进制文件,这会导致所有用户的引用丢失。您的意思是,如果您从github repo下载项目,则在生成该项目时,包还原不起作用,从而导致生成错误。如果是,请尝试右键单击solution=>restore nuget packages并检查输出,如果存在错误消息,请共享。如果重建解决方案有任何帮助,您也可以尝试。是的,这正是我的意思。当我单击“Restore Nuget Packages”时,它会显示“一切都已安装-没有要恢复的内容”,但我的Nuget软件包仍然处于“waring”状态。当我查看fileexplorer时,packages文件夹在那里(它已签入),但dll丢失,因为您不想将二进制文件签入版本控制。简而言之,还原不会还原丢失的DLL或包文件夹。您使用的vs版本是什么?如果你从github下载的项目是开源的,请在这里共享链接,这样我就可以直接查看它了。问题不在于构建作业。当其他开发人员签出他们的代码时。因为nuget不还原包。所以我认为nuget任务将是“下一步”。我检查了所有nuget.configs(在项目中它们不存在),但检查了全局配置。nuget.org不是被排除在外的,所以我不明白,为什么nuget不自动恢复包。感谢分享您的解决方案:)