、あなたの質問に私のコメントを気づく場合、私がまさにあなたがしたいか、これについては移動する必要があるか当然わからないんだけど、私たちは、より精巧な説明を持ってまで、私が唯一提供できることは明らかですあなたはそれがあなたの状況によく合う期待して(キーは「検索」アセンブリである)この:
var className = "System.Boolean";
var assemblyName = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
var assembly = (from a in assemblies
where a.FullName == assemblyName
select a).SingleOrDefault();
if (assembly != null)
{
System.Runtime.Remoting.ObjectHandle obj =
System.Activator.CreateInstance(assemblyName, className);
}
.NET 2.0互換性のあるコード
Assembly assembly = null;
var className = "System.Boolean";
var assemblyName = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
{
if (a.FullName == assemblyName)
{
assembly = a;
break;
}
}
if (assembly != null)
{
System.Runtime.Remoting.ObjectHandle obj =
System.Activator.CreateInstance(assemblyName, className);
}
あなたがいるか否かを判断する場合ファイルは存在する前に存在します広告は、それ(グッドプラクティス)、その後、あなたがその名前を持って、目的の場所を知っている与えられた、単にアセンブリが解決されているときに、ファイルを検索してみてください。
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
var className = "StackOverflowLib.Class1";
var assemblyName = "StackOverflowLib.dll";
var currentAssemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var obj = Activator.CreateInstance(Path.Combine(currentAssemblyPath, assemblyName), className);
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var currentAssemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (File.Exists(Path.Combine(currentAssemblyPath, args.Name)))
{
return Assembly.LoadFile(Path.Combine(currentAssemblyPath, args.Name));
}
return null;
}
現在のアプリドメインにロードされていますか? 'assemblyName'とは何ですか?完全修飾アセンブリ名または物理ファイルパス? –
@MrDisaapointment私が知っている唯一のことは、私のデータベースに「CustomModule」があることです。 CustomModule.dllがbinまたはGAC(!?)に存在する場合、classnameで指定されたクラスが生成されます。 –
私の最新のアップデートを見て、うまくいけば、これは続行するのに十分です。 –