簡體   English   中英

Powershell無法在VS 2013 Package Manager控制台中找到其dll或依賴項

[英]Powershell fails to find its dll or dependency in VS 2013 Package Manager Console

我正在使用VS Express 2013 .Net 4.5。 我正在Oracle VirtualBox Windows 7 64位客戶端中使用MS SQLServer LocalDB在MVC5和EF6中進行設計。

我正在嘗試通過以下命令應用SQL Server LocalDb遷移:

PM> Enable-Migrations -ContextTypeName SGHWA_MVC.Models.Context

這總是失敗。

我對Web表單的了解很少,因此我對MVC和EF完全陌生。 我也從未使用過PMC和Powershell。 我已經搜索了解決方案,但沒有找到與Package Manager Console產生的此錯誤類似的問題。

首先有一個警告:

無法確定有效的啟動項目。 改用項目“ SGHWA_MVC”。 您的配置文件和工作目錄可能未按預期設置。 使用-StartUpProjectName參數可以顯式設置一個。 使用-Verbose開關以獲取更多信息。

PCM下拉框正確顯示默認項目為SGHWA_MVC。 解決方案屬性頁面將這個項目顯示為啟動項目。

我去了http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference,但是看不到提到的-StartUpProjectName參數。 我不確定此參數適用於哪個命令。

然后出現第一個錯誤:

帶有“ 1”參數的調用“ LoadFrom”的異常:“無法加載文件或程序集'file:// \\ W7O2007 \\ Users \\ Admin \\ Documents \\ Visual Studio 2013 \\ Projects \\ SGHWA_MVC \\ packages \\ EntityFramework.6.1.0 \\ tools \\ EntityFramework.PowerShell.Utility.dll'或其依賴項之一。不支持操作。(HRESULT的異常:0x80131515)“在\\ W7O2007 \\ Users \\ Admin \\ Documents \\ Visual Studio 2013 \\ Projects \\ SGHWA_MVC \\ packages \\ EntityFramework.6.1.0 \\ tools \\ EntityFramework.psm1:780 char:62
+ $ utilityAssembly = [System.Reflection.Assembly] :: LoadFrom <<<<(((加入路徑$ ToolsPath EntityFramework.PowerShell.Utility.dll))
+ CategoryInfo:未指定:(:) [],MethodInvocationException
+ FullyQualifiedErrorId:DotNetMethodException

這表明該文件不存在要加載的位置,但確實存在於PC上,如圖所示。 我懷疑是Join-Path失敗了,但是不確定如何測試。

packages.config文件中有一行:-

(導致<刪除)程序包id =“ Powershell.Deployment” version =“ 1.1.0.0” targetFramework =“ net45” />

我的研究表明,項目構建應該將“生成序列化程序集”設置為“打開”,“關閉”或“自動”,甚至是導致此問題的NuGet程序包,也可能是權限,遠程訪問,但我無法確定它是否是PMC,NuGet ,Powershell或Windows問題。

出現另外兩個錯誤消息,它們與EntityFramework.psm1中的類似問題有關,並且似乎與第一個問題有關。

請任何人提供建議可能的原因並指導我通過什么/方法進行測試和解決嗎?

我意識到這是一個舊線程,但是我只是使用帶有Update 1的新安裝的Microsoft Visual Studio 2015 Enterprise副本遇到了此問題。

我的解決方案是刪除此文件夾:

C:\Users\\(my user ID)\\.nuget\packages\EntityFramework\6.1.3

並允許在下一次將實體框架添加到項目中時重新生成它。 最初,此文件夾中缺少PowerShell DLL。 奇怪。

您的問題分為幾個部分。

首先,您找不到文檔,並且唾手可得:

Update-Database -?

然后,您可以閱讀此幫助的底部:

TO see the examples, type: "get-help Update-Database -examples".
For more information, type: "get-help Update-Database -detailed".
For technical information, type: "get-help Update-Database -full".

其次,需要-StartupProjectName來查找具有所需連接字符串的配置文件(您也可以直接使用其他選項指定連接) 注:這與解決方案的啟動項目無關

並且,如果清除此內容仍不能解決問題,請嘗試卸載並重新安裝EntityFramework軟件包(以防萬一出現問題)。 請考慮到,如果您有多個項目,則可能需要對所有受影響的項目執行此操作。 您可以使用“ Manage Nuget Packages for Solution...菜單選項更輕松地執行此操作。

編輯

(已添加以幫助在Package Manager控制台中選擇正確的Default項目或指定-ProjectName )。

我忘了回答問題中最重要的部分:為了使Migrations命令起作用,有必要在引用EF程序集的項目上運行它們。 這樣可以解決缺少的裝配問題。

在這種情況下,很明顯,所選的StartUpProject(即Web應用程序)具有連接字符串,但沒有對EF的引用。 這就是運行命令失敗的原因。 並且很可能該命令將作為默認項目在控制台中運行。

要解決此問題,您需要在一個引用了EF的項目中運行Migrations,它可以正常運行:在Package Manager控制台頂部的名為“默認項目”的下拉列表中選擇該項目。

也可以通過指定-ProjectName選項來完成,該選項必須指向包含Migration配置類的項目,因此也要引用EF。 注意:您還必須sepcify的-ConfigurationTypeName PARAM,如果你有好幾個環境遷移,從EF 6支持

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM