gpt4 book ai didi

.net - 从 .Net 4.0 到 4.5 的重定向解决方案 - 如何重定向 NuGet 包?

转载 作者:行者123 更新时间:2023-12-04 12:58:57 24 4
gpt4 key购买 nike

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

我不确定的是 NuGet 包。例如,我在 VS2010 中从 EF4 更新的 EF5 实际上是 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 的所有 NuGet 包重新定位到面向 .NET 4.5 的最佳实践是什么?

最佳答案

NuGet 2.1 提供了一个让这件事变得更简单的功能:只需做 update-package -reinstall -ignoreDependencies从包管理器控制台。

NuGet 2.0 不能很好地处理重新定位您的应用程序。为了更改包的目标框架,您必须卸载并重新安装包(记下您已安装的包,以便您可以重新安装每个包)。

必须卸载并重新安装软件包的原因是:

  • 安装包时,我们确定您项目的目标框架
  • 然后我们将其与包内容进行匹配,找到适当的\lib\文件夹(和\content\文件夹)
  • 程序集引用添加了指向包的\lib\文件夹的提示路径,带有正确的子文件夹(例如\lib\net40)
  • 内容文件从包\content\文件夹中复制,带有正确的子文件夹(例如\content\net40)
  • 我们在packages.config文件中记录了用于安装包的targetFramework
  • 更改项目的目标框架后,提示路径仍指向 net40
  • 当您卸载软件包时,我们会检查在 packages.config 中记录的 targetFramework 以查看要从您的项目中删除哪些目标框架的库/内容
  • 当您重新安装软件包时,我们会检测您更新的目标框架并引用/复制正确的库/内容
  • 关于.net - 从 .Net 4.0 到 4.5 的重定向解决方案 - 如何重定向 NuGet 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18334557/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com