小编sta*_*lue的帖子

appDomain.Unload(domain)后如何删除pluginassembly

我有一个奇怪的问题.我想删除已加载的程序集(硬盘上的plugin.dll),但程序集被操作系统(vista)锁定,即使我已卸载它.

FE

AppDomainSetup setup = new AppDomainSetup();
setup.ShadowCopyFiles = "true";
AppDomain appDomain = AppDomain.CreateDomain(assemblyName + "_AppDomain", AppDomain.CurrentDomain.Evidence, setup);
IPlugin plugin = (IPlugin)appDomain.CreateInstanceFromAndUnwrap(assemblyName,                        "Plugin.MyPlugins");
Run Code Online (Sandbox Code Playgroud)

我还需要assemblyinfos,因为我不知道pluginassembly中的哪些类实现了IPlugin接口.在一个Pluginassembly中应该可以有多个插件.

Assembly assembly = appDomain.Load(assemblyName);
if (assembly != null) {
   Type[] assemblyTypes = assembly.GetTypes();
   foreach (Type assemblyTyp in assemblyTypes) {
      if (typeof(IPlugin).IsAssignableFrom(assemblyTyp)) {
         IPlugin plugin = (IPlugin)Activator.CreateInstance(assemblyTyp);
         plugin.AssemblyName = assemblyNameWithEx;
         plugin.Host = this;
      }
   }
}
AppDomain.Unload(appDomain);
Run Code Online (Sandbox Code Playgroud)

如何在不锁定程序集的情况下从appDomain获取assemblyinfos?

最好的祝福

c# plugins assemblies

17
推荐指数
3
解决办法
8559
查看次数

基于GAC内容设置的.NET参考"复制本地"真/假

我们在Win Forms项目中遇到了一个非常有趣的问题.它已经解决了.我们知道发生了什么,但我们想知道它为什么会发生.这可能有助于将来遇到类似问题的其他人.

WinForms项目在我们客户的两台PC上失败了.该错误是一个模糊的kernel.dll错误.该项目在另外3台PC上运行良好.

我们发现我们的发布文件夹中缺少.DLL(log4net.dll - 一个非常流行的开源日志库).它以前在我们的发布文件夹中.为什么在最新版本中缺少它?

它丢失了,因为我必须在我的开发盒上安装了一个程序,该程序使用了log4net.dll,并将其添加到全局程序集缓存中.

当我检查解决方案对log4net.dll的引用时,它们被更改为"copy local = FALSE".它们必须自动更改,因为我的GAC中存在log4net.dll.

这是我的问题开始的地方:

为什么我对log4net.dll的引用从COPY LOCAL = TRUE更改为COPY LOCAL = FALSE?我怀疑是因为它是由另一个程序添加到我的GAC中的.

我们怎样才能防止这种情况再次发生?现在,如果我安装一个使用公共库的软件并将其添加到我的GAC,那么引用该DLL的我的SLN将从Copy Local TRUE更改为FALSE.

.net log4net assemblies gac reference

17
推荐指数
1
解决办法
2万
查看次数

混合SSE整数/浮点SIMD指令时,是否会降低性能?

我最近以内在函数的形式使用了x86 SIMD指令(SSE1234).我发现令人沮丧的是,SSE ISA有几个简单的指令,只能用于浮点数或仅用于整数,但理论上它们应该同样适用于两者.例如,float和double向量都有指令从地址(movhps,movhpd)加载更高的64位128位向量,但是没有这样的整数向量指令.

我的问题:

在整数向量上使用浮点指令时是否有任何理由期望性能受到影响,例如使用movhps将数据加载到整数向量?

我写了几个测试来检查,但我认为他们的结果不可信.编写一个正确的测试来探索这些事情的所有极端情况真的很难,特别是在这里可能涉及指令调度时.

相关问题:

其他平凡相似的东西也有几个基本相同的指令.例如,我可以使用por,orpsorpd按位OR .任何人都可以解释这些附加说明的目的是什么?我想这可能与应用于每条指令的不同调度算法有关.

c assembly sse simd intrinsics

17
推荐指数
1
解决办法
3564
查看次数

如何在Windows Server 2008中的程序集中安装文件?

通常我以前做的是将文件拖放到GAC文件夹中.
这适用于Windows 2000和2003,但是当我尝试在Windows Server 2008中执行此操作时,我得到"访问被拒绝".

执行此操作的用户是本地管理员.

我能找到的唯一参考是: 论坛链接

还有另一种方法来实现这一目标吗?

注意:我尝试以管理员身份运行资源管理器,但是我收到同样的错误.

编辑:理想情况下,无论什么解决方案都不应该关闭UAC,或安装任何软件开发工具包.(因此它可以应用于生产服务器).

编辑:有没有人对此有任何想法?我目前已经开始禁用开发中的UAC,但这在现场是不可接受的.

.net assemblies windows-server-2008

16
推荐指数
1
解决办法
5万
查看次数

如何在IronPython中创建.NET程序集并从C#调用它?

我想使用IronPython创建一个程序集,可以从C#中调用它.这是我问的两件事.

  1. 我不是问如何从IronPython中调用C#.最容易找到的文档描述了如何从IronPython中调用C#.(例如,IronPython附带的教程.)我想反过来,从C#调用IronPython.

  2. 我不是问如何嵌入IronPython解释器.我已经找到了几个有用的参考资料(例如这里这里),介绍如何从C#调用IronPython解释器.这很有帮助,但我更感兴趣的是从IronPython创建一个已编译的程序集.也就是说,我想对IronPython程序集进行方法调用,而不是将源代码字符串传递给解释器.

一旦我创建了程序集,有什么关于调用它的技巧?一个博客帖子,我发现说:

...从C#调用Python程序集是非常重要的.该python程序集包含动态类型,这些类型不容易反映到有用的C#对象中.

你知道在IronPython和C#之间传递基本数据类型的任何备忘单吗?

更新:我现在最感兴趣的场景是将两个或三个double值传递给Python并double返回一个或两个值.如果我可以传入一个字符串并获得一个非常棒的字符串,但我的首要任务就是来回传递数字.

ironpython assemblies

16
推荐指数
1
解决办法
6079
查看次数

什么是8051系列最好的C编译器?

我们正在开始一个基于8051微控制器的新项目.

问题:

  1. 什么是最好的C编译器使用?
  2. 有没有开源8051编译器,它们有多好?

c compiler-construction embedded 8051

16
推荐指数
3
解决办法
2万
查看次数

如何在ARM中使用MOV指令,并使用立即数作为第二个操作数

我刚开始研究ARM汇编语言,并不清楚如何使用MOV将立即数转移到寄存器中.

从ARM参考手册和我的教科书中可以看出,MOV指令后的立即数范围是0-255.但是,当我在ADS 1.2 IDE中使用我自己的PC进行测试时,指令

MOV     R2, #0xFFFFFFFF
Run Code Online (Sandbox Code Playgroud)

表现很好.根据规格,数字0xFFFFFFFF不在范围之外吗?

希望有人能帮我一臂之力.

问候.

assembly arm

16
推荐指数
2
解决办法
5万
查看次数

C# - 引用动态生成的程序集中的类型

我试图弄清楚当你动态生成程序集时,是否有可能引用先前动态生成的程序集中的类型.

例如:

using System;
using System.CodeDom.Compiler;
using System.Reflection;
using Microsoft.CSharp;

CodeDomProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();

parameters.GenerateInMemory = true;

CompilerResults results = provider.CompileAssemblyFromSource(parameters, @"
namespace Dynamic
{
    public class A
    {
    }
}
");

Assembly assem = results.CompiledAssembly;

CodeDomProvider provider2 = new CSharpCodeProvider();
CompilerParameters parameters2 = new CompilerParameters();

parameters2.ReferencedAssemblies.Add(assem.FullName);
parameters2.GenerateInMemory = true;

CompilerResults results2 = provider2.CompileAssemblyFromSource(parameters2, @"
namespace Dynamic
{
    public class B : A
    {
    }
}
");

if (results2.Errors.HasErrors)
{
    foreach (CompilerError error in …
Run Code Online (Sandbox Code Playgroud)

c# assemblies reference dynamic

16
推荐指数
1
解决办法
7546
查看次数

How do I translate assembly to binary?

For example:

        .text
        .align 2
        .global main
        .equ val,0x4712         # 16-bit binary code for 0x4712: 0100 0111 0001 0010
                                # Program code starts now
main:                           # This label must be main:, not MAIN: 
        movi r16,val            # WHAT WOULD THIS LINE BE IN BINARY?
        movi r17,0
loop:   addi r17,r17,1
        subi r16,r16,1 
        bne  r16,r0,loop
stop:   br   stop
.end 
Run Code Online (Sandbox Code Playgroud)

assembly

16
推荐指数
1
解决办法
2万
查看次数

带有作用域枚举的数组索引(转换为整数)

C++ 11范围的枚举器(enum class语法)不转换为整数,因此它们不能直接用作数组索引.

在以这种方式使用它们时,获得范围界定的最佳方法是什么?

我已经提供了几个答案,但请添加更多想法!

c++ arrays enums

16
推荐指数
3
解决办法
8264
查看次数