C#、Visual Studio 2010を使用します。
MSDNに記載されているSystem.Web.Mvcという名前空間があります。その名前空間のすべてのタイプのドキュメントには、それらがSystem.Web.Mvc.dll
ます。
ただし、[参照の追加]の[.NET]タブに移動すると、このアセンブリがリストに表示されません。どうして?
C#、Visual Studio 2010を使用します。
MSDNに記載されているSystem.Web.Mvcという名前空間があります。その名前空間のすべてのタイプのドキュメントには、それらがSystem.Web.Mvc.dll
ます。
ただし、[参照の追加]の[.NET]タブに移動すると、このアセンブリがリストに表示されません。どうして?
回答:
VS Express 2012では、「アセンブリ」タブでSystem.Web.Mvcを見つけることができませんでしたが、少し検索したところ、デフォルトの「アセンブリ\フレームワーク」ではなく、「アセンブリ\拡張」タブを調べる必要があることがわかりました。" タブ。
Could not load file or assembly...The located assembly's manifest definition does not match the assembly reference
)。ソリューションに別のバージョンを参照する別のプロジェクトがあり、この方法ではSystem.Web.Mvc、Version = 4.0.0.0への参照を追加することしかできませんでした。NuGetインストールメソッドで正しいバージョンが追加されました
最善の方法は、NuGetパッケージマネージャーを使用することです。
以下のMVCパッケージを更新するだけで動作します。
同じ問題があり、System.Web.MVC参照アセンブリを見つけることができませんでした。
ようやく発見し、以下の場所にありました。
VSがCにインストールされている場合は注意してください(MVC.dllが、誰もが話しているデフォルトの場所にない場合があります。つまり、「参照アセンブリ。つまり、C:ドライブにある」フォルダーをます)。
ない場合は、必ずここにあるはずです。
\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies \ System.Web.Mvc.dll
そのため、参照または追加参照メニューの参照タブを使用してDLLを追加します。
Nuget Package Manager Consoleから次のように追加することもできます。
Install-Package Microsoft.AspNet.Mvc -Version 4.0.20710.0 -ProjectName XXXXX
Microsoft.AspNet.Mvcは、次のものに依存しています。
...それは私にとって大したことのないようです。私たちの場合、これは、Mvcアプリのサポートを提供するためだけに存在するクラスライブラリです。したがって、最悪の場合、それは良性の依存関係であると考えます。
ファイルシステムまたはGACのアセンブリを指すよりも、これを優先します。将来のパッケージの更新は、過去のGACおよびファイルシステムアセンブリの参照での経験よりもはるかに簡単です。
私は同じ問題を抱えており、ここに面白い理由があります:私の推測では、あなたはSystem.Web.Mvc
下にいると予想していますSystem.Web
はリストのに。しかし、リストはアルファベット順ではありません。
最初にリストを並べ替え、次にの近くを調べますSystem.Web
。
「そのXMLをWeb.configに追加しても機能しますが、質問には答えられません」
そこにあるはずです。デフォルトでは、参照の追加リストが順序付けされているようですが、そうではありません。名前のヘッダーをヒットして、もう一度見てください。
次の手順を確認してください。
注:ターゲットフレームワークが.Net Framework 4 Client Profileに設定されている場合、参照リストにMVC参照はリストされません。.Net Framework 4と.Net Framework 4 Client Profileの違いについては、こちらをご覧ください。
.NET Framework 4クライアントプロファイルは、クライアントアプリケーション用に最適化された.NET Framework 4のサブセットです。Windows Presentation Foundation(WPF)、Windowsフォーム、Windows Communication Foundation(WCF)、ClickOnce機能など、ほとんどのクライアントアプリケーションに機能を提供します。これにより、.NET Framework 4クライアントプロファイルを対象とするアプリケーションの展開がより速くなり、インストールパッケージが小さくなります。
目的のアセンブリがリストに表示されました。
私はそれが表示された原因を推測することしかできませんが、これまでに行ったことのない[ファイル] → [ 新規] → [ プロジェクト] →[ ASP.NET Webアプリケーション]を選択したことが原因だと思います。これにより、何らかの初期化が遅れ、リストにWeb開発用の追加のアセンブリが追加された可能性があります。
これはVisual Studio 2012で変更されました(元の質問ではVS2010と書かれていますが、タイトルは検索にヒットします)。
VS2012 MVCプロジェクトを作成すると、system.web.mvcがソリューションのピアであるパッケージフォルダーに配置されます。これは、デフォルトでWebプロジェクトで参照され、そこで正確なパスを見つけることができます)。
これをセカンダリプロジェクトで参照する場合(たとえば、フィルターまたはその他の属性を持つサポート.dll)、そこから参照できます。
VS 2012ではSystem.Web.Mvcを取得しませんでしたが、VS 2013では取得しました。AddReferenceDialogを使用して、
または、これはプロジェクトパスにあります。
YourProjectName \ packages \ Microsoft.AspNet.Mvc.5.0.0 \ lib \ net45 \ System.Web.Mvc.dll
MVCアセンブリは、プロジェクト自体ではなく、web.configファイルで参照されていると思います。
このようなもの:
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
あなたのコメントに返信するには;
add要素は、動的リソースのコンパイル中に使用するアセンブリ参照を追加します。ASP.NETは、各コードモジュールをコンパイルするときに、このアセンブリをリソースに自動的にリンクします。
個別にインストールでき、フレームワークに含まれていません。タブリストの「拡張機能」を選択します。他にも多数のライブラリが存在します。古いライブラリを使用する必要はありません。古い20 30と4001が存在します。
Visual Studio 2017でこの問題が発生した場合は、以前のバージョンのVSで作成されたMVC 4プロジェクトで参照ヒントパスを指定して作業している可能性があります C:\Program Files (x86)\Microsoft ASP.NET
いる。Visual Studio 2017はこのディレクトリをインストールしなくなりました。
通常、これは、2017年のインスタンスと一緒にVisual Studio 2015のコピーをインストールすることでこれを解決し、上記のパスに必要なライブラリをインストールします。次に、影響を受けるプロジェクトのすべての参照を更新します。