使c#类库成为可运行的应用程序

时间:2016-08-30 10:50:21

标签: c# .net

我想创建一个控制台应用程序并将其添加到另一个类库项目中。所以我的类库将是可运行的应用程序。

enter image description here

namespace MyWorker.Host
{
    class Program
    {
        static void Main(string[] args)
        {

        }
    }

    public interface IConfiguration
    {
        void Configure();
    }
}

我正在添加MyWorker.Host作为MyWorker.Client类库项目的参考。并将调试设置设置为“启动外部程序”。

enter image description here

现在我想搜索引用 MyWorker.Host 的客户端程序集。我会找到实现IConfiguration接口的类。

namespace MyWorker.Host
{
    class Program
    {
        static void Main(string[] args)
        {
            var implementations = AppDomain
                .CurrentDomain
                .GetAssemblies()
                .SelectMany(assemly => assemly.GetTypes())
                .Where(t => !t.IsInterface)
                .Where(t => typeof (IConfiguration).IsAssignableFrom(t));

            foreach (var assembly in implementations)
            {
                Console.WriteLine(assembly.FullName);
            }

            Console.Read();
        }
    }
}

但是控制台写没有

(如果我在MyWorker.Host中添加一个concrate类,它会编写控制台。)

1 个答案:

答案 0 :(得分:0)

之前我做过类似的事情,但是必须通过DLL查看实现您使用Reflection之后的接口的类。当然,您需要一种传递该路径的方法,该路径可以是可配置的,或者只是查看解决方案目录中的所有子目录等。