首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NuGet命令-用于卸载/重新安装TFS/TFS 2013和NuGet 3.4.3软件包的行选项

问NuGet命令-用于卸载/重新安装TFS/TFS 2013和NuGet 3.4.3软件包的行选项
EN

Stack Overflow用户
提问于 2017-08-14 23:56:47
回答 2查看 865关注 0票数 1

我修改了一个解决方案,删除了一个.csproj文件,然后将.dlls打包到一个NuGet包中。然后,我将包添加到引用.dlls的另外两个.dlls文件中。一切都很好--它在本地构建,但我无法让它构建在构建服务器上。当我查看从TFS获取的用于构建的代码时,我发现两个项目的packages.config都有对NuGet包的正确引用,但是当我在VS中打开解决方案时,引用旁边有一些黄色感叹号,因为它们是中断的引用。我能让它构建的唯一方法是打开NuGet CMI并执行卸载包包名称和安装包名称。那么参考资料就很好了。当我查看主项目的packages.config时,它包含了对包的正确引用。因此,我已经放弃了让TFS正确地抓取包,但是由于安装包和卸载包是CMI命令,所以我不能自动化它(或者我可以吗?)有没有人知道,在从TFS中提取源代码之后,但在构建之前,我是否可以实现自动化呢?

EN

回答 2

Stack Overflow用户

发布于 2017-08-15 10:00:41

黄色感叹号问题应该与引用路径相关。当您将源从TFS下载到另一个位置时,随着原始引用路径的更改,系统将无法找到引用。

因此,您需要重新安装包,您可以在package控制台中使用NuGet命令行:

代码语言:javascript
复制
Update-Package -reinstall
票数 0
EN

Stack Overflow用户

发布于 2017-08-17 06:39:20

因为安装包和卸载包都是CMI命令,所以我不能自动化(或者可以)?有没有人知道,在从TFS中提取源代码之后,但在构建之前,我是否可以实现自动化呢?

简单的答案是,您可以,而不是自动化。您可以使用命令Install-Package和Uninstall-Package将包重新安装到Package控制台中的项目中,但这似乎不可能实现自动化。请原谅我下面冗长的解释。

首先,我们需要知道NuGet CLI和包管理器之间操作Install packages的不同,尽管NuGet CLI和Package都支持操作Install packages。

Install packages在NuGet CLI上的操作

​

​

显然,当您在NuGet CLI上使用Install-packages操作时,NuGet不会重新安装引用,只需将包下载到packages文件夹。请参见NuGet CLI参考:

安装命令不修改项目文件或packages.config;通过这种方式,它与restore类似,它只向磁盘添加包,而不更改项目的依赖项。

相反,在包管理器上运行安装包

将包及其依赖项安装到项目中。

如果您想要自动化这一点,您必须通过NuGet CLI执行此操作。由于NuGet CLI上的安装包不会修改项目的引用,所以我们无法自动化操作安装包来更新项目的引用.。

此外,我们也不建议你自动化这一点。一旦您实现了自动化,每次构建项目之前,NuGet都会执行卸载/安装操作。我们只需要在从TFS获得项目之后进行卸载/安装操作。即使我们不需要执行此操作,如果项目的引用在NuGet恢复后没有中断。因此,根据项目的参考来确定是否使用命令:

代码语言:javascript
复制
Update-Package -reinstall

在控制台中应该是最佳选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45684692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档