我正在尝试为outlook创建外接程序,并且对反序列化和防病毒程序有问题。
我注意到当我的外接程序试图反序列化任何数据时,.NET框架在“C:\Users\{UserName}\AppData\Local\Temp\"文件夹中创建了临时dll。
这个dll存在的时间很短,但反病毒有时会锁定它,并添加抛出的错误消息,即file is used by another process。
我试图摆脱临时dll,并找到使用sgen工具创建XmlSerializers.dll的建议。
我生成了MyAssembly。XmlSerializers.dll具有强名称,并将其放在带有外接程序(C:\Pro
我用c#.net编写了一个动态链接库,它在应用程序中调用另一个第三方.NET动态链接库。当我使用以下代码用c#.NET编写的控制台应用程序测试它时,它工作得很好:
Assembly u = Assembly.LoadFrom(dllLocation);
Type t = u.GetType("MyLIB.CLass");
MethodInfo m = t.GetMethod("Method");
object[] myparam = new object[1];
myparam[0] = fileLocation;
result = (string)
我的RavenDB对象是从动态加载的DLL中的类型创建的。我无法将DLL加载到当前AppDomain的执行上下文中,因此JSON反序列化程序无法找到这些类型。
如何使用在运行时加载程序集中使用类型?
NB 通过AppDomain从另一个域为DLL提供服务,但这会导致以后的冲突。虽然它解决了这个问题中的问题,但我现在需要确保我的所有对象都是由动态加载的程序集中的类型创建的。
我正在使用.NET序列化反序列化一个名为Method的类。Method包含实现IAction的对象列表。我最初使用属性来指定实现IAction的所有类。
但是现在,我想更改我的程序,加载一个目录中的所有动态链接库,并去掉实现IAction的类。然后,用户可以反序列化包含其实现IAction的操作的文件。
我不再控制实现IAction的类,因此我不能使用。
有没有办法在运行时设置这个属性?或者为实现类设置类似的属性?
public class Method
{
public List<Actions.IAction> Actions = new List<Actions
正如标题所述,反序列化在使用themida保护我的应用程序之后失败,但有以下例外:
无法生成临时类(result=1)。错误CS0009:元数据文件“c:\Path\to\protected.exe”无法打开--“试图加载格式不正确的程序。”
下面是我用于反序列化的代码(当exe不受保护时,它可以工作):
MyClass myClass;
try
{
using (var stream = new MemoryStream(Data))
{
var serializer = new XmlSerializer(typeof(ComSec.MyClass)