好吧,这样做之后一吨的研究和尝试的几乎每一个管理CPP包含我可以找到以及试图复制我Dll当地执行目录的程序,我不能找出什么的依赖我失为这个混合模式库。

基本上,我有一个大的C#用我想使用的混合模式库。在开发计算机上,它完美的作品(的过程),但部署在该图书馆需要加载于使用它的例外,因为缺少CRT依存关系(I assume).

我已经使用依赖沃克检查的所有Dll引用和确保他们存在于部署的机器有没有运气,我很想知道,如果也许是一些依赖关系,需要加以登记,我丢失了,但是我不能找出什么.

我得到以下的例外的代码时,试图实例一类的混合模式库。

异常的细节:系统。IO.FileLoadException:不能 加载文件或组件'USADSI.书兼, Version=1.0.3174.25238, 文化=中立的,程序=null' 或它的一个依赖关系。此 应用程序已经启动失败 由于应用程序配置 是不正确的。重新安装的 应用程序可能解决这个问题。(异常从HRESULT:0x800736B1)

我编制的图书馆使用VS2008SP1/clr:oldSyntax规定。

中间体现这样的:

<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='asInvoker' uiAccess='false' />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

我可以提供任何更多的信息,如需要,不幸的是我没有精通使混合模式库,因此这已经引发我。

如果任何人都可以提供的任何意见,我将非常感谢!

有帮助吗?

解决方案

你部署的 CRT库 在目标的机器?只要射击:因为你有一个依赖32位代码,应该设定的目标的平台建立财产的选项,以x86。

编辑:麻烦-拍摄边解决问题 Sxstrace.exe 实用, 可在Vista。

其他提示

通常我发现的 pragma评论 风格的清单decleration的要多得多错误,从一开发维护和对所有建设行动的观点。XML清单的是 natoriously同盟军.

该fimiluarity如何连接运行和通常的汇编C码而事实上,你根本德这在上一个你的源文件,使一切有点感觉更多"起来";

#pragma comment(linker, \
    "\"/manifestdependency:type='Win32' "\
    "name='Microsoft.Windows.Common-Controls' "\
    "version='6.0.0.0' "\
    "processorArchitecture='*' "\
    "publicKeyToken='6595b64144ccf1df' "\
    "language='*'\"")

我有一个类似的问题,我第一次部署了一个VS2005应用程序在一目标的机器--不得不把在MSVCRT80DLL。你是说你已经有2008年VS runtime library吗?

ETA:此外,愚蠢的问题但是你确定你有两CRT运行时间(与以上) 。净运行时,有相同的版本编制的反对(可能是3.5)?你可能已经知道这一点(尤其是考虑你的分数),但是他们2个不同的东西。

我找到一个解决方案,似乎工作虽然我不喜欢,它非常多。

我不得复制文件夹:

Microsoft。VC90.CRT&Microsoft。VC90.MFC

自:程序文件\Visual Studio9.0\VC\包含\x86

进入部署的应用程序的目录,我只是想不通为什么这似乎是工作和可再发行组件没有采取任何行动。

编辑:看清单我可能不需要复制MFC目录

最好的方式来解决这个问题是下载过程监视器,这是免费的:http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

添加一个过滤器来看只有你的过程,它会告诉你所有文件访问过程的尝试。这将显示你到底是哪dll它不能找到。

我总是用这个当面对同样的问题-如果只有微软填补在本文件中抛出的异常它都将更容易。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top