Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net “帮助调试的提示”;无法加载文件或程序集X或其依赖项之一;_.net_Exception_Visual Studio 2010_Assembly Resolution - Fatal编程技术网

.net “帮助调试的提示”;无法加载文件或程序集X或其依赖项之一;

.net “帮助调试的提示”;无法加载文件或程序集X或其依赖项之一;,.net,exception,visual-studio-2010,assembly-resolution,.net,Exception,Visual Studio 2010,Assembly Resolution,我正在寻找帮助调试应用程序负载问题的提示/建议/见解;无法加载文件或程序集 我遇到此问题的解决方案/项目是从VisualStudio2008中的工作副本转换为VisualStudio2010候选版本。转换过程似乎是成功的,所有解决方案项目都设置为框架4 第三方组件(图形处理库)例外,但任何答案都可能帮助其他人解决任何麻烦的DLL 无法加载文件或程序集“Aurigma.GraphicsMill.DLL”或其依赖项之一。不是有效的Win32应用程序。(HRESULT的异常:0x800700C1) 此

我正在寻找帮助调试应用程序负载问题的提示/建议/见解;无法加载文件或程序集

我遇到此问题的解决方案/项目是从VisualStudio2008中的工作副本转换为VisualStudio2010候选版本。转换过程似乎是成功的,所有解决方案项目都设置为框架4

第三方组件(图形处理库)例外,但任何答案都可能帮助其他人解决任何麻烦的DLL

无法加载文件或程序集“Aurigma.GraphicsMill.DLL”或其依赖项之一。不是有效的Win32应用程序。(HRESULT的异常:0x800700C1)

此异常的混淆之处在于附加文本:不是有效的Win32应用程序

完整的异常堆栈跟踪已启动,但似乎没有对该问题提供更多信息

到目前为止,我所做的尝试没有成功:

  • Visual Studio 2010 RC的简单清理、重建和重新启动组合
  • 删除并重新添加有问题的DLL
  • 在所讨论的DLL上将“复制本地”切换为true和false
  • 确认“成功构建”后,相关DLL显示在bin\debug文件夹中
  • 正在检查对有问题的DLL的任何不必要的引用(未找到)
  • 有关DLL的关联许可证文件与其位于同一目录中

  • 我也没有在应用程序加载时碰到任何调试器断点的运气。

    当我的可执行项目被设置为任何CPU并且引用了使用x86编译的dll时,我也遇到了类似的异常

    尝试将可执行文件设置为x86,看看它是否有效。如果它不尝试获取有关错误的更多详细信息。

    提示

    我们采取的一种调查方法解决了部分问题,但没有解决整个问题,它是x86(32位)和x64(64位)程序集相互引用的混合


    确保您没有依赖于/引用64位程序集的32位程序集。

    我发现此问题的原因是,由于您已切换到.net v4,您现在正在IIS7中使用一个新的应用程序池,专门用于asp.net v4(该池本身称为“asp.net v4.0”)

    在应用程序池的“高级设置”部分,将“启用32位应用程序”设置为true,此时问题DLL将按预期加载

    显然,如果web应用程序有自己的应用程序池,您也应该这样做


    如果您使用的是Windows Server 2008(不是R2),请参阅更改应用程序池的“高级设置”部分->将“启用32位应用程序”设置为true,这样就解决了我的问题。

    奇怪的是,我也遇到了同样的问题,我在应用程序池的“高级设置”中允许32位应用程序,然后就成功了

    这是因为您试图加载32位的二进制依赖项(您的
    Bin
    文件夹中的一个文件),并且您的应用程序正在64位模式下运行

    在.Net 4和IIS 7中,应用程序池默认以64位模式运行

    大多数.Net二进制文件都是使用在其构建属性中设置的
    任何CPU
    编译的。这意味着它们在32位和64位模式下工作

    < .NET中编写的大多数C++和C应用程序需要专门编译为32位或64位。这意味着,如果您使用的是错误的bin部署版本的依赖项,它将无法加载

    这可以通过以下方法之一解决:

    如果要保留32位引用/依赖项:

  • 特别设置IIS应用程序以32位模式运行。
    • 在IIS管理方面
    • 应用程序池->高级设置(右侧)
    • “已启用32位应用程序”设置为True
    • 重新启动应用程序池
  • 在GAC中安装两个程序集(32位和64位)。IIS将根据操作环境加载正确的版本(在您的情况下,这似乎是64位版本)
  • 如果您只是想让它工作:

  • Bin
    文件夹中的32位二进制文件替换为64位二进制文件。IIS加载它不会有问题

  • 检查DLL是否被阻止。
    右键单击Dll>属性>取消阻止。

    谢谢,目标平台没有帮助,fusion日志也没有帮助,出于未知原因,它不喜欢报告加载问题,它在左运行时报告了其他问题。。。