![](/img/trans.png)
[英]How to have two project in .net solution one targeting 4.0 framework and other one 4.5 framework?
[英]Retargeting solution from .Net 4.0 to 4.5 - how to retarget the NuGet packages?
我已经将目前在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提供了使它变得更加简单的功能:只需从Package Manager控制台执行update-package -reinstall -ignoreDependencies
。
NuGet 2.0无法很好地处理应用程序的重新定位。 为了更改软件包的目标框架,必须卸载并重新安装软件包(注意已安装的软件包,以便可以重新安装每个软件包)。
必须卸载并重新安装软件包的原因是:
对于那些使用update-package -reinstall <packagename>
命令有问题的人,请考虑使用-ignoreDependencies
标志运行它,如下所示:
update-package -reinstall <packagename> -ignoreDependencies
此标志将使您的程序包依赖项不受影响,否则即使您最初想要重新安装的程序包仍保持其版本不变,它们也可能会得到更新。
更多信息在这里 。
在尝试了无法接受的答案后,我想提出一个风险较小的命令:
Update-Package <PackageName> -ProjectName <ProjectName> -Reinstall -IgnoreDependencies
有关更多信息: http : //blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html
尝试在整个解决方案范围内重新安装软件包时,我遇到了一个依赖项错误(尽管使用了-ignoreDependencies
标志),并且每个项目的所有packages.config文件都已删除。 在VS2013中,在将所有升级的依赖项/引用重新附加到项目之前, packages.config似乎不会刷新回到磁盘并重新添加。
在我的情况什么工作是给每个项目升级一个-AT-A-时间通过添加-ProjectName
项目名称的update-package
的命令。 在这种情况下,随着每个项目的升级, packages.config也会更新。
对于大型解决方案来说可能不切实际,但似乎仍是一个合理的折衷方案,即仍然对尽可能多的项目利用自动升级,并隔离有问题的项目,而不会因失败而删除解决方案中的每个package.config 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.