我已将 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,以查看要从项目中删除哪些目标框架的库/内容
- 当您重新安装软件包时,我们会检测您更新的目标框架并引用/复制正确的库/内容
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)