System.ComponentModel.DataAnnotationsを参照できないのはなぜですか?


97

WPFプロジェクトでDataAnnotationsを使用して、文字列の最大長を次のように指定しようとしています。

using System.ComponentModel.DataAnnotations;

しかし、私はエラーが出ます

タイプまたは名前空間名 'DataAnnotations'が名前空間 'System.ComponentModel'に存在しません(アセンブリ参照がありませんか?)

この名前空間にDataAnnotations 存在する他の例を見てきました。C#4を使用しています。これが使えない理由はありますか?どうすれば修正できますか?


MVCをインストールしましたか?DataAnnotationsはそのパッケージに属していると思います
dougajmcdonald 2012

3
おそらく「アセンブリ参照がありません」。
phoog 2012

1
エラーメッセージは、無視されないように役立つように設計されています。
Kendall Frey

6
わかりません、無知に見えることを許してください、しかし私はアセンブリSystem.ComponentModelを参照し、その中でさまざまな他のコンポーネントを使用しています。以下の@Hariによると、それはDataAnnotations独自のアセンブリに存在するようです。System.ComponentModel同じ名前空間にあるため、その中に存在すると思いました。
DaveDev 2012

回答:


156

この名前空間が定義されているアセンブリを参照する必要があります(Visual Studioテンプレートでは、デフォルトでは参照されていません)。参照マネージャーを開き、System.ComponentModel.DataAnnotationsアセンブリへの参照を追加します(ソリューションエクスプローラー->参照の追加-> .Netタブを選択->リストからSystem.ComponentModel.DataAnnotationsを選択)


10
ここで奇妙なのは、VSがこの問題に対する通常の「潜在的な修正」を私に提供できなかったことです。不思議な理由
トッドヴァンス

VS2019では、.netタブは(もう)ありません。私のために働いているJohnBのより最近の答えをチェックしてください!
peter.cyc

19

.NET Coreまたは.NET Standardを使用している場合

使用する:

NuGetパッケージの管理...

NuGetパッケージの管理を使用する

の代わりに:

参照を追加...

参照の追加を使用しない


5
コマンドラインからdotnet add package System.ComponentModel.Annotations
Eric

また、VSCodeにnugetパッケージマネージャーをインストールする-->コマンド「command + shift + p」(Macの場合)-->と入力し、「Nugetパッケージマネージャー」と入力して、オートコンプリートリストから[パッケージを追加]を選択します-- >そしてSystem ..と入力し、オートコンプリートが正しいパッケージを表示するのを待って、「System.ComponentModel.Annotations」を選択します-->そして、このアセンブリを含める必要があるプロジェクトを選択します-->そして参照を確立します。
supi

13

System.ComponentModel.DataAnnotationsを参照するには

コードファイルでUsing System.ComponentModel.DataAnnotations; ファイルの先頭など:

using System.ComponentModel.DataAnnotations;

ソリューションエクスプローラーでプロジェクトを右クリックして、プロジェクトに.NET参照を追加します。

ここに画像の説明を入力してください

お役に立てれば!この質問は私を助けました。


8

参照に含まれていない場合(私が持っていなかったように)、NuGet System.ComponentModel.Annotationsを追加してアセンブリを取得し、エラーを解決することもできます。(この回答はまだエラーのグーグルのトップなのでここに追加します)


4

私も同じ問題を抱えていましたが、言及されていないプロジェクトの1つに参照を追加することで解決しました。ソリューションに2つから3つのプロジェクトがある場合は、この参照を他のプロジェクトに追加して確認します。


2

フレームワークバージョン4.5以降をプロジェクトに使用すると問題が解決します。この名前空間は4.5以降にあるためです。


1
それは間違っています。こちらを
itho

.NET 4.5.xを使用していますが、含まれていません。しかし、私はMVCを使用していません。このアプリは、1日に1回cronジョブとして実行されるUIのない​​コンソールアプリです。各SQL Serverテーブル行から取得した列からのデータを保持するデータメンバーを表すクラスでDataAnnotationsを使用したいだけです。参考として手動で追加してみます。
MiddleAgedMutantNinjaProgrammer 2016年

それを見てください。ここ
user2090762

@ user2090762:名前空間は存在しますが、すべてのクラスがまだ存在しているわけではありません。特に、EmailAddressAttributeは4.5まで使用できません。
jmoreno 2017

2

以下のバージョン(1)でSilverlight 5のSystem.ComponentModel.DataAnnotationsを参照できないことがわかりました。Silverlight 5アセンブリは.NETアセンブリを使用できないことがわかり、「Silverlightランタイムに対してビルドされていないため、System.ComponentModel.DataAnnotationsへの参照を追加できません。...」というエラーが発生します。うまくいけば、以下の(2)にあるSilverlight 5パッケージをインストールします。これが失敗した場合は、この投稿を更新します。

[更新:失敗しました。Silverlight 5に関連するすべてをインストールしましたが、.dllアセンブリのSilverlightバージョンSystem.ComponentModel.DataAnnotationsを持っていません。残念な。更新II:以前のVisual Studio 2008または2010用のSilverlight開発者キットのインストールから、この名前の古い.dllが見つかりました。このファイルを追加しましたが、IntelliSenseがクラスメンバーの属性を認識しているため、正常に機能しているようです。などの [Display(Name = "My Property Name")]. かどうか私は知らないこの.dllで他のすべてのためにこの作品。]

(1)

Microsoft Visual Studio Professional 2013
Version 12.0.21005.1 REL
Microsoft .NET Framework
Version 4.5.51641

インストールされているバージョン:Professional

(2) http://go.microsoft.com/fwlink/?LinkId=229318


更新III-System.ComponentModel.DataAnnotations.dllをクライアント側で動作させることができませんでしたが、Silverlight 5の場合、サーバー側で奇妙なことに、Silverlightプロジェクトはこの.dllの.NET v4.5.1バージョンを正常に使用します。しかし、クライアント側は.NETバージョンを受け入れず、この.dllのSilverlightバージョンを要求します。この日付の時点では、どこにも見つかりません。そのため、クライアント側でなくてはなりません。
PaulDecember 2014年

1

同じ問題に遭遇したので、このトピックに関するヘルプを検索しました。

以下は、2012年に最初に尋ねられた質問への回答ではないかもしれませんが、このスレッドに出くわした人のための解決策になるかもしれません。

これを解決する方法は、プロジェクトがソリューション内のどこにあるかを確認することです。私のインスタンス(NuGetパッケージをインストールしようとしましたが、インストールせず、リストされたエラーが表示されました)では、ソリューションエクスプローラーに表示されていますが、プロジェクトファイルがソリューションディレクトリに含まれていないことがわかりました。範囲外のディレクトリからプロジェクトを削除し、プロジェクトを再度追加しましたが、今回は正しい場所に追加しました。


0
This error occurs when the reference to the "System.dll" got removed.Solution to the problem is very simple add the reference to "System.dll".The dll is normally available in the following location
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" .Add the reference your problem will get solved .

0

vs2008からvs2010にビジュアルスタジオを更新しようとした場合。そして、あなたのアプリはフレームワーク3.5を使用し(そしてそれをアップグレードしたくありません)、またWCF RIAサービスベータを使用しました...悪い知らせがあります... WCF RIAサービスv1にアップグレードする必要があります(ベータはvs2010では機能しません) )...このため、Silverlight 4をインストールし、フレームワーク4.0にアップグレードする必要もあります。

これを参照してください:http : //blog.nappisite.com/2010/05/updating-visual-studio-2008net-35-ria.html


0

Silverlight 4からSilverlight 5にアップグレードしたところ、この問題が発生しました。プロジェクトの[参照]の下にある[System.ComponentModel.DataAnnotations]への参照がありましたが、以前に参照されたアセンブリが見つからなかったことを示す黄色の降伏記号がありました。「System.ComponentModel.DataAnnotations」リファレンスのプロパティが「Specific Version = True」を示していることがわかりました。これを「Specific Version = False」に変更すると、問題が修正されました。「参照」の下の「System.ComponentModel.DataAnnotations」アセンブリを右クリックし、コンテキストメニューから「プロパティ」を選択します。「特定のバージョン= False」のプロパティ値を確認します。

Silverlight 5へのアップグレード後に使用できなくなった古いSilverlight 4アセンブリを参照している必要があります。


0

System.ComponentModel.DataAnnotationsは独自のアセンブリに含まれているため、参照されていることを確認する必要があります。単に:

1)。Soloutionを右クリックして、追加を選択します。

2)。リストから参照を選択します。

3)。「System.ComponentModel.DataAnnotation」を検索し、左側のチェックボックスをオンにして、[OK]を押します。

ジョブは完了しました。参照エラーはありません。


0

私にもこの問題があります。システムと同じ名前空間を追加すると、それは非常に愚かです。すべての参照を削除しようとしましたが、解決されません。私は "global :: System.ComponentModel"を使用していますが、これも機能しています。名前空間を削除すると、この問題は解決されました。


-6

同じ問題がありましたが、次の方法でこの問題を解決しました。

ページを右クリックし、[プロパティ]を選択します。ビルドアクションで[コンテンツ]を選択します。

このソリューションが役立つことを願っています。


あなたはどの「ページ」を参照していますか?そして、それはどのように正確に役立ちますか?
Crono 2014

1
まあ、これは本当に間違っています。ビルド中にプロジェクト要素を「コンテンツ」として扱うようにすると、その動作が失われます。したがって、クラスで実行すると、コンパイルされなくなり、コードが呼び出されることはありません。代わりに、プログラムのコンパイル出力のバイナリに沿ってファイルとしてコピーされます。これがコンパイルエラーの受信を停止する理由ですが、コンパイルの問題に対する解決策ではありません。
Ivaylo Slavov、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.