如何完全信任非签名程序集?

时间:2012-06-04 13:10:34

标签: c# .net security .net-assembly full-trust

我有一个程序集,在我自己的电脑上工作得很好但是当我尝试在虚拟机上引用它时,我收到了以下错误:

System.IO.FileNotFoundException: Could not load file or assembly 'X.dll' or one of its ependencies. The specified module could not be found.
File name: 'X.dll'
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark&stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm,Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
   at System.Reflection.Assembly.LoadFrom(String assemblyFile)
   at kernelLoader.Program.Main(String[] args)

我完全确定该文件位于指定的位置,并且代码在我自己的机器上(在它已经开发的地方)正常工作。它与所有引用的程序集一起编译为x86平台。

我认为,错误可能是由于程序集不完全受信任造成的。

我不能强烈地唱大会,因为它引用了几个没有签名的程序集,而且我没有代码或修改的权利。

我怀疑有一种很好的方法可以在我运行它的mashine上建立一个程序集。

如何将程序集标记为受信任,以便可以加载和执行它?

1 个答案:

答案 0 :(得分:1)

该异常通常是由于缺少dll引起的。可以使用的一件事是ProcMon。当加载缺失的dll并且发生错误时,文件名应显示在ProcMon中。