C# 如何在';是作为字节数组加载的吗?

C# 如何在';是作为字节数组加载的吗?,c#,.net,.net-assembly,C#,.net,.net Assembly,我有一个存储在字节数组中的程序集,我想使用其中的类型 我可以在开发时将其保存到文件中,并在项目的引用中引用它。但是当部署时,文件不在那里,程序崩溃。如果我不引用它,VisualStudio当然会抱怨该类型不存在 如果可能的话,我会尽量避免使用反射。这意味着,当组件预先可用时,它应该是简单的 问题不是如何加载程序集。相反-如何将其中的可用类用作任何其他代码-使用intellisense等。我认为您可以使用静态AssemblyResolve事件 AppDomain.CurrentDomain.Ass

我有一个存储在字节数组中的程序集,我想使用其中的
类型

我可以在开发时将其保存到文件中,并在项目的引用中引用它。但是当部署时,文件不在那里,程序崩溃。如果我不引用它,VisualStudio当然会抱怨该类型不存在

如果可能的话,我会尽量避免使用反射。这意味着,当组件预先可用时,它应该是简单的


问题不是如何加载程序集。相反-如何将其中的可用类用作任何其他代码-使用intellisense等。

我认为您可以使用静态
AssemblyResolve
事件

AppDomain.CurrentDomain.AssemblyResolve += (s, e) =>
    {
        //Use e.Name
        //Load assembly form byte[] and return it.
        return Assembly.Load(byteArray);
    };

@L.B.你在编辑过程中抓住了我。由于程序集已经存在-应该有一种方法可以更简单地使用该类型。@下一个投票者是否愿意发表评论?不是我的下一个投票者,但很难看出您想弄明白什么:VS从程序集了解类只有一种方法-添加对项目的引用,因此,如何做到这一点并不像是一个有效的问题(特别是对于拥有100+代表的人)。你似乎排除了对这个问题的所有其他解释。旁白:大多数读者可能会考虑<代码>汇编。LoadXXX < /代码>作为反射,因此“避免反射”在这样的场景中感觉非常混乱。@ AlexeiLevenkov:“VS有一种方式可以从程序集中了解类来添加对项目的引用”——我想引用它,但是不知怎么说,“分离”。因此,稍后应用程序将继续使用字节数组中的程序集(与用于开发的程序集完全相同)。不过,我觉得这是不可能的。如果是的话——这就是答案——那是不可能的。谢谢你的输入。我仍然不确定你的问题到底是什么(因为大部分我认为有趣的部分被“问题不在于如何加载程序集”)切断。您的场景与使用System.dll(或任何其他未直接部署的程序集)有何不同?也许您正在寻找在项目中将“复制本地”属性设置为“false”?我可以加载程序集。我想要的是能够在其中简单地使用
类型
。@ispiro只是一如既往地引用项目中的dll,但您不必部署它。例如,它可以是您资源中的一条流。谢谢。这似乎是一个很好的解决方案。我需要调查一下。看来在部署时我仍然需要这些资源。是否有任何方法可以使用简单的字节数组(例如,常规
cs
文件中的base64字符串)?@ispiro-如果您想在设计/编译时引用代码中的类型,则需要添加对它的引用。您可以让您的应用程序使用程序集,但是您必须编写自己的逻辑来动态使用类型(通过反射)。