エラーメッセージ '要求された種類の1つ以上を読み込めません。詳細については、LoaderExceptionsプロパティを取得してください。

c# entity-framework

質問

Entity Framework 、SQL Server 2000、Visual Studio 2008、およびEnterprise Libraryを使用してアプリケーションを開発しました。

これはローカルではまったく問題なく動作しますが、プロジェクトをテスト環境にデプロイすると、次のエラーが発生します。

要求されたタイプを1つ以上ロードできません。詳細については、LoaderExceptionsプロパティを取得してください。

スタックトレース:System.Reflection.Module._GetTypesInternal(StackCrawlMark&stackMark)

System.Reflection.Assembly.GetTypes()で

System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContextコンテキスト)

System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContextコンテキスト)

System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache(アセンブリアセンブリ、Boolean loadReferencedAssemblies、辞書2 knownAssemblies, Dictionary 2&typesInLoading、List`1&errors)

System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection、objectItemCollection、アセンブリアセンブリ、Boolean loadReferencedAssemblies)

System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType(Type type)

System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType(Type type、Assembly callingAssembly)

System.Data.Objects.ObjectContext.CreateQuery [T](String queryString、ObjectParameter []パラメータ)

Entity Frameworkに問題があるようですが、解決するための手がかりがありますか?

受け入れられた回答

プロジェクトの参照のCopy Local属性をtrueに設定することでこの問題を解決しました。


人気のある回答

このエラーには本当の魔法の答えはありません。重要なのは、問題を理解するためのすべての情報を入手することです。ほとんどの場合、動的にロードされたアセンブリに参照アセンブリがありません。そのアセンブリはアプリケーションのbinディレクトリにある必要があります。

このコードを使用して、欠けているものを判別してください。

using System.IO;
using System.Reflection;
using System.Text;

try
{
    //The code that causes the error goes here.
}
catch (ReflectionTypeLoadException ex)
{
    StringBuilder sb = new StringBuilder();
    foreach (Exception exSub in ex.LoaderExceptions)
    {
        sb.AppendLine(exSub.Message);
        FileNotFoundException exFileNotFound = exSub as FileNotFoundException;
        if (exFileNotFound != null)
        {                
            if(!string.IsNullOrEmpty(exFileNotFound.FusionLog))
            {
                sb.AppendLine("Fusion Log:");
                sb.AppendLine(exFileNotFound.FusionLog);
            }
        }
        sb.AppendLine();
    }
    string errorMessage = sb.ToString();
    //Display or log the error based on your application.
}


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ