相关疑难解决方法(0)

如何加载位于.net核心控制台应用程序中的文件夹中的程序集

我正在.Net Core平台上制作一个控制台应用程序,并且想知道,如何使用C#动态功能加载程序集(.dll文件)和实例化类?它似乎与.Net 4.X有很大不同,并没有真正记录......

例如,假设我有一个类库(.Net Core),它只有一个类:

namespace MyClassLib.SampleClasses
{
    public class Sample
    {
        public string SayHello(string name)
        {
            return $"Hello {name}";
        }

        public DateTime SayDateTime()
        {
            return DateTime.Now;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,dll文件的名称将MyClassLib.dll位于其中/dlls/MyClassLib.dll.

现在我想在一个简单的控制台应用程序(.Net Core)中加载它并实例化Sample该类并使用C#的动态功能在以下控制台应用程序中调用方法:

namespace AssemblyLoadingDynamic
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // load the assembly and use the classes
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

注意: .Net Core我指的是RC2版本.

.net c# .net-core .net-core-rc2

35
推荐指数
4
解决办法
4万
查看次数

PostBuild事件中的.NET Core Assembly.LoadFile

我需要typescript在构建之后从我的一些C#类生成文件.

我创建dotnet cli tool并添加了post-build事件

dotnet tsgenerator "$(TargetPath)"
Run Code Online (Sandbox Code Playgroud)

$(TargetPath)例如,宏在哪里指向D:\Test\bin\Release\netcoreapp2.0\my.dll

接下来,我尝试下一步加载程序集:

public static void Main(string[] args)
{
    var dllPath = args[0]; // "D:\Test\bin\Release\netcoreapp2.0\my.dll"
    var assembly = Assembly.LoadFile(dllPath);
    var types = assembly.GetExportedTypes(); // Throws exception
}
Run Code Online (Sandbox Code Playgroud)

但我得到了ReflectionTypeLoadException,说Could not load file or assembly了一些参考组件(例如,Microsoft.AspNetCore.Antiforgery).

我如何为.NET Core应用程序加载程序集?

.net c# .net-core asp.net-core

9
推荐指数
1
解决办法
864
查看次数

标签 统计

.net ×2

.net-core ×2

c# ×2

.net-core-rc2 ×1

asp.net-core ×1