2017-03-04 7 views
3

私はC#とNet Coreの新機能です。誰かが評価コマンドに私のコードを渡しました。 しかし、Net Coreでは作成されていないため、AppDomainはNet Coreには存在しません。どうすればよいですか?Net CoreのAppDomainの置き換え

ScriptOptions so = ScriptOptions.Default; 

      so = so.WithImports(new string[] { "System.Math", "System.Diagnostics", "System.Runtime.InteropServices", 
      "Discord.WebSocket", "Discord.Commands", "Discord", "System.Threading.Tasks", "System.Linq", "System", "System.Collections.Generic", "System.Convert", "System.Reflection"}); 
      so = so.WithReferences(AppDomain.CurrentDomain.GetAssemblies().Where(xa => !xa.IsDynamic && !string.IsNullOrWhiteSpace(xa.Location))); 

答えて

4

あなたが必要なものを達成するためにMicrosoft.Extensions.DependencyModelライブラリを使用することができます.NETコアにはAppDoamainはありません。

以下はarticleのコードです。そこに詳細が表示されます。

return GetReferencingLibraries("Specify") 
.SelectMany(assembly => assembly.ExportedTypes); 

public static IEnumerable<Assembly> GetReferencingAssemblies(string assemblyName) 
{ 
    var assemblies = new List<Assembly>(); 
    var dependencies = DependencyContext.Default.RuntimeLibraries; 
    foreach (var library in dependencies) 
    { 
     if (IsCandidateLibrary(library, assemblyName)) 
     { 
      var assembly = Assembly.Load(new AssemblyName(library.Name)); 
      assemblies.Add(assembly); 
     } 
    } 
    return assemblies; 
} 

private static bool IsCandidateLibrary(RuntimeLibrary library, assemblyName) 
{ 
    return library.Name == (assemblyName) 
     || library.Dependencies.Any(d => d.Name.StartsWith(assemblyName)); 
} 

上記のコードを使用するには、Microsoft.Extensions.DependencyModelパッケージを含める必要があります。

+0

AppDomainは、[.Net Standard 2.0(https://stackoverflow.com/a/45600956/465053)の一部として完全に消滅していません。 – RBT

関連する問題