我使用Entity Framework,SQL Server 2000,Visual Studio 2008和Enterprise Library 开发了一个应用程序.
它在本地工作得非常好,但是当我将项目部署到我们的测试环境时,我收到以下错误:
无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息
堆栈跟踪:在System.Reflection.Module._GetTypesInternal(StackCrawlMark和stackMark)
在System.Reflection.Assembly.GetTypes()
at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContext context)
在System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContext context)
at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache(Assembly assembly,Boolean loadReferencedAssemblies,Dictionary
2 knownAssemblies, Dictionary2&typesInLoading,List`1&errors)at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection,Assembly assembly,Boolean loadReferencedAssemblies)
at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType(Type type)
at System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType(Type type,Assembly callingAssembly)
at System.Data.Objects.ObjectContext.CreateQuery [T](String queryString,ObjectParameter [] parameters)
实体框架似乎有问题,任何线索如何修复它?
我试图找出如何在C#应用程序中运行时导入和使用.dll.使用Assembly.LoadFile()我设法让我的程序加载dll(这部分肯定是有效的,因为我能够获得带有ToString()的类的名称),但是我无法使用'输出'我的控制台应用程序内的方法.我正在编译.dll然后将其移动到我的控制台项目中.CreateInstance之间是否有额外的步骤,然后能够使用这些方法?
这是我的DLL中的类:
namespace DLL
{
using System;
public class Class1
{
public void Output(string s)
{
Console.WriteLine(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我想要加载DLL的应用程序
namespace ConsoleApplication1
{
using System;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
var DLL = Assembly.LoadFile(@"C:\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\DLL.dll");
foreach(Type type in DLL.GetExportedTypes())
{
var c = Activator.CreateInstance(type);
c.Output(@"Hello");
}
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)