重新定向的解决方案,从.NET 4.0到4.5 - 如何重新定位了的NuGet包?重新定向的解决方

2019-05-12 15:44发布

我已经迁移当前在VS2010到VS2012针对.NET 4.0的解决方案,现在我想重新定位它.NET 4.5

什么我不知道是的NuGet包。 例如EF5,这是我从EF4在VS2010更新,原来是实际EF 4.4,你可以在这里看到:

    <Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
    </Reference>

我还可以看到在packages.config项目的下列内容:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="5.0.0" targetFramework="net40" />
</packages>

所以我的问题是:

什么是重新定位的最佳做法,目前已设置为面向.NET 4.0的目标.NET 4.5所有的Nu​​Get包?

Answer 1:

的NuGet 2.1提供了一个功能,使这是一个简单得多:只是做update-package -reinstall -ignoreDependencies从包管理器控制台。

的NuGet 2.0不处理重新定位你的应用程序非常好。 为了改变你的包的目标框架,您必须卸载并重新安装包(带您已经安装了,让你可以重新安装他们每个人的包注)。

该包装的原因,必须卸载并重新安装是:

  • 当安装包,我们确定项目的目标框架
  • 然后,我们匹配了包内容,找到合适的\ LIB \文件夹(\内容\文件夹中)
  • 大会引用添加提示的路径指向包的\ LIB \文件夹中,用正确的子文件夹(\ LIB \ net40为例)
  • 内容文件从包\内容\文件夹中复制,使用正确的子文件夹(\内容\ net40为例)
  • 我们记录中使用的packages.config文件中安装的软件包的targetFramework
  • 您更改项目的目标框架后,提示路径仍然指向net40
  • 当您卸载包,我们检查记录在packages.config,看看有什么目标框架的libs的targetFramework /内容,从项目中删除
  • 当你安装了这一软件,我们检测到您的更新目标框架和参考/复制权库/内容


Answer 2:

对于那些谁曾与问题的update-package -reinstall <packagename>命令,考虑运行它-ignoreDependencies标志,就像这样:

update-package -reinstall <packagename> -ignoreDependencies

此标志将离开你独自包依赖关系,否则他们可能会得到更新,即使你本来想重新安装包仍然保持它的版本相同。

更多信息这里 。



Answer 3:

不成功尝试接受的答案后,我想提出一个风险较小的命令:

Update-Package <PackageName> -ProjectName <ProjectName> -Reinstall -IgnoreDependencies

欲了解更多信息: http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html



Answer 4:

虽然尝试重新安装宽包解决方案,我遇到了一个相关性错误(尽管使用的-ignoreDependencies标志),以及所有为每个项目的packages.config文件已被删除。 在VS2013,似乎packages.config不会被刷新回磁盘,并重新添加,直到所有的升级依赖性/引用重新连接到该项目。

在我的情况什么工作是每个项目都有一个-AT-A-时间通过添加升级-ProjectName 项目名称update-package的命令。 在这种情况下,每个项目都升级packages.config被更新。

可能不是非常大的实用的解决方案,但它似乎是一个合理的妥协仍然利用尽可能多的项目,尽可能自动化升级并分离出有问题的人,而不必在你的解决方案失败删除每packages.config。



文章来源: Retargeting solution from .Net 4.0 to 4.5 - how to retarget the NuGet packages?