VS2010 MVC3利用NuGet来安装EFCodeFirst package失败解决方法

背景①:利用NuGet来安装EFCodeFirst方法

①我们可以利用NuGet包管理器(安装ASP.NET MVC3时会自动安装)来把EFCodeFirst类库添加到我们的Mvc工程中。这个类库使得我们可以直接使用code-first。点击“工具”菜单下的“Library Package Manager”子菜单下的“Add Library Package Reference”菜单选项;

②点击“Add Library Package Reference”菜单选项后,将会弹出一个对话框,标题为“Add Library Package Reference”;

③默认状态下,左边的“All”选项处于选择状态。因为还没有安装任何包,所以右边面板中显示“找不到任何项”。点击左边面板中的“online”选项,NuGet包管理器将会在服务器上检索所有当前能够获取的包;

④服务器上有几百个当前能够获取的包,现在我们只关注EFCodeFirst包。在右上角的搜索输入框中输入“EFCode”。在检索结果中,选择EFCodeFirst包,并且点击Install按钮安装包;

⑤点击了install按钮后,会弹出一个接受许可证窗口,在这个窗口中必须要点击“I Accept”按钮,接受许可证条款,安装才能继续进行。

⑥安装完毕后,点击close按钮。我们的Mvc工程中会自动加载EntityFramework程序集,其中包含了EFCodeFirst类库。

背景②:让事实说话

今天在Win 7下利用NuGet来安装EFCodeFirst package时,出现错误:This package(or one of its dependencies) contains PowerShell scripts and needs to be installed from the Package Manager Console。

师兄的XP下出现该提示的解决方法是打一个微软的补丁KB968930,下载地址:

http://www.microsoft.com/downloads/zh-cn/results.aspx?freetext=KB968930&displaylang=zh&stype=s_basic

里面有XP,Vista,Windows Server 2003及2008的32位,64位版本,但是没有Win 7版本的,

微软对该补丁的描述如下:

Windows XP 更新程序 (KB968930)
Windows Management Framework Core 程序包提供了适用于 IT 专业人员的已更新管理功能。

用于 Windows Server 2008 的 Windows PowerShell 2.0 和 WinRM 2.0 (KB968930)
Windows Management Framework Core 程序包包括 Windows PowerShell 2.0 和 Windows Remote Management (WinRM) 2.0。

解决鸟:后来根据提示找到了一个在控制台进行安装的解决方法:

①博客园原文内容如下:

I tried to install EntityFramework 4.1 on VS 2010 through NuGet. I searched and found the package through “Tools > Library Package Manager > Add Library Package Reference” tool and I got this error: “This package (or one of its dependencies) contains powershell scripts and needs to be installed from the package manager console.”. This is what I did to fix it:

Tools > Library Package Manager > Package Manager Console
PM > get-package -remote -filter entityframework
(got some results including EntityFramework 4.1.10311.0)
PM > install-package -id EntityFramework
Successfully added ‘EntityFramework …

②根据提示,在控制台安装会出现如下信息(以下蓝色内容为需要输入的命令):

Each package is licensed to you by its owner. Microsoft is not responsible for, nor does it grant any licenses to, third-party packages. Some packages may include dependencies which are governed by additional licenses. Follow the package source (feed) URL to determine any dependencies.

PM> get-package -remote -filter entityframework

Id Version Description
– ——- ———–
Check_My_Box_Packages 1.1.0.2 This Package uses MvcScaffolding, EntityFramew…
Check_My_Box_Packages 1.1.0.3 This Package uses MvcScaffolding, EntityFramew…
EFCodeFirst 1.0 Legacy package, Code First is now included in …
EFCodeFirst 1.1 Legacy package, Code First is now included in …
EntityFramework 4.1.10311.0 DbContext API and Code First workflow for ADO….
EntityFramework 4.1.10331.0 DbContext API and Code First workflow for ADO….
EntityFramework.Patterns 0.2 Provides different patterns to be used with En…
EntityFramework.Sample 4.1 This sample blog model demonstrates the use of…
EntityFramework.SqlServerCompact 4.1.8482.1 Allows SQL Server Compact 4.0 to be used with …
EntityFrameworkProfiler 1.0.0.839 EntityFramework Profiler is a real-time visual…

PM> install-package -id EntityFramework
You are downloading EntityFramework from Microsoft, the license agreement to which is available at http://go.microsoft.com/fwlink/?LinkID=211010. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device.
已成功安装“EntityFramework 4.1.10331.0”
已成功将“EntityFramework 4.1.10331.0”添加到 MvcMovie

 

题目如下:

  1. 解决规划:

1)封闭VS2010

2)从头下载NuGet

3)打开VS2010
//若是显示如图

//则默示你 没有选择景象

How to use it

      1. Open a project in Visual Studio (it doesn""t matter which - if you try to install a package outside of a solution, you""ll get slapped down with "The current environment doesn""t have a solution open").
      2. Open the Package Manager console (View / Other Windows / Package Manager Console).
      3. Type "install-package NuGet.Downloader" - you should see "Successfully installed ""Nuget.Downloader 1.0.0.5""." (with whatever the current version number is).
      4. This adds a new commend to the Package Manager console, Download-Packages. You can run it without any parameters, which will grab the top 500 most popular NuGet packages and drop them in a new LocalNuGet folder inside your My Documents folder.
      5. If desired, uninstall the package using Uninstall-Package.

//你须要做的就是设置DefaultProject

4)再用PM> install-package -id EntityFramework -Version 4.2.0.0号令进级即可

 

Nuget 这个工具最先是在MIX11上开始让我注意.不知道当时看MIX同学是否注意到一个小细节.-就是所有MIX11 Code演示环节中MS开发人员都使用Nuget.本篇介绍一些Nuget安装和一些在实际项目中基本用法.

首先 解释一下Nuget Tool是什么?

2011-12-20_183915

NuGet 是一种 Visual Studio 扩展工具,它能够简化在 Visual Studio 项目中添加、更新和删除库(部署为程序包)的操作。 NuGet 程序包是打包成一个文件的文件集,扩展名是 . nupkg,使用开放打包约定 (OPC) 格式.

在没有使用Nuget工具之前.如果我们要在一个普通.NET项目中添加一个库的引用.最简单的方式就是添加DLL引用的方式实现第三方代码库引用.通过下载解压.添加引用操作.如果在发布时还需要为项目依赖项进行大量手工整理.是否发现.在DLL引入到发布整个过程存在一个管理”真空“状态.如果要向其他开发者或组织共享我们代码.是否意味更复杂的操作.着恰恰也是Nuget所做的.

安装Nuget有两种方式.方式一打开Visual Studio 2010,打开Tool->Extension Manager窗体.选择Online Gallery,在搜索框中输入NuGet看到:

extension-manager-with-nuget

点击Download下载会自动安装,另外一种方式打开http://www.nuget.org/直接下载安装文件NuGet Manager . 点击运行开始安装:

2012-01-04_105511

选择安装工具 下一步:

2012-01-04_105518

安装完成.如果在安装过程出现错误货没有正确安装会在安装界面提示:

2012-01-04_115357

关于安装出错后通过查看Install Log 确定出错的原因:

2012-01-04_115744

如果觉得麻烦.也可以不看.直接找到上图的目录删除掉NuGet Package Manager文件夹,重新安装Nuget Tool即可.安装完成后可以创建一个Windows phone Application 打开Tool->Library Package Manager->Package Manager Console:

2012-01-04_135817

可以通过在控制台Package Manager Console 输出目录管理库 首先在在线的http://www.nuget.org/packages目录下找到对应库初始化路径 类似找到Json.NET http://www.nuget.org/packages/Newtonsoft.Json 初始化路径为:

2012-01-04_140447

输入:Install-Package Newtonsoft.Json

2012-01-04_140616

如果对应库文件较大.则会在Visual Studio 右下角提示有下载进度.安装完成后:

2012-01-04_140921

可以在当前项目目录中看到已经成功添加到引用中:

2012-01-04_141025

 

 

 

 

 

 

 

 

 

可以引用管理手动添加库文件.在解决方案的References引用可以看到:

2012-01-04_141245

多了一个Manage Nuget Packages打开管理窗体能够实现已经安装库文件管理:

2012-01-04_141459

Nuget提供基于 Windows PowerShell 的控制台窗口(称作程序包管理器控制台)以及一组 Windows PowerShell 命令与 NuGet 进行交互。 Windows PowerShell 是基于 .NET 的脚本语言和命令行 shell,非常适合组成命令集,并能够处理对象.当然PowerShell提供强大支持可以Package Manager Console通过指令直接管理卸载库 例如卸载已经引用Json.NET库输入:Unstall-Package Newtonsoft.Json卸载.如果想看到当前项目已经引用的Package在Console 直接通过指令的方式获取 Get-Package:

2012-01-04_142207

 

 

 

看到当前项目中已经使用库文件 以及版本其他信息.如果已经引用的组件存在新的版本 依然可以通过Update-Package批量更新已经引用的库:

2012-01-04_143018

 

命令尝试将每个程序包都更新到最新版本,如果任何程序包包含重大改变,这会是一项非常重大的操作。 在多数情况下,您仅希望将各程序包更新至最新的修补程序版本。 这叫“安全”更新,前提是具有较大内部版本号或修订号(但具有相同的主版本号和次版本号)的程序包能够向后兼容。 仅添加 Safe 标记以执行安全更新:例:Update-Package –Safe

当然我们能够现在操作都是基于在线Nuget官方数据源Package操作.当然我们可以PAckage数据源设置成本地 找到绿色按钮Package Manager Settings:

2012-01-04_143814

打开并在一个指定本地目录下添加一个本地Package数据源:

2012-01-04_143950

能在Console看到指定的数据源设置分类LocalPackages:

2012-01-04_144057

当然对于组织结构更大的公司和开发团队.如果简单的使用SVN和Git管理方式依然不容易控制不同库版本和对外共享的控制.Nuget针对企业用户提供可以在企业内部搭建一个Nuget Server的形式来统一管理内部开发团队库共享. 大大提高开发效率.

本文转自:http://www.cnblogs.com/weixing/archive/2012/08/25/2655947.html